簡體   English   中英

在彼此頂部的框架上添加多個面板

[英]Add more than one panel on a frame on top of each other

我正在做一個顯示正方形和圓形的項目。 圓自行移動,但是用戶可以通過箭頭鍵移動正方形。 只要圓圈碰到正方形,它就會反彈。

正方形和圓形是不同的類別(2個不同的面板)。 我想將這兩個添加到框架中,一個在另一個之上,以便兩者都可見。 有人可以告訴我該怎么做嗎?

JFrame n = new JFrame();
n.setTitle("Background Color for JFrame");
n.setSize(1000,600);
n.setLocationRelativeTo(null);
n.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

n.setResizable(false);

n.add(new Ball());
n.add(new Team());

n.setVisible(true);

默認情況下,假定層次結構中同一級別的用戶界面組件不重疊。 您可以通過使用setOpaque(false)使組件透明來顯式地解決此問題,假設您只在繪制組件中需要的內容,例如在使用JPanel的情況下,請確保未繪制其背景。 它在執行此操作時仍然有些隨機性(取決於實現)。

有一個專門為此設計的組件:JLayeredPane( https://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html ),它管理可以放置組件的“層”,從而使您可以完全控制哪些覆蓋。

游戲通常自己實現,因為不需要JComponent的全部功能來表示一個簡單的圖形元素。 在那種情況下,單個組件用作“畫布”,以使用paintComponent的覆蓋來繪制自定義對象(請參閱: https : //docs.oracle.com/javase/tutorial/uiswing/painting/

聽起來,如果您想搖擺不定,我真的建議您創建一個擴展JPanel的新類,並覆蓋它的paintComponent方法。 在此方法中,您可以在參數中使用Graphics來繪制畫布。 然后,您可以將此自定義面板而不是兩個單獨的組件添加到JFrame中,並在那里處理渲染。 然后,此渲染面板可以跟蹤所有需要渲染的對象,最好使用draw(Graphics g)方法實現某些接口(Drawable?)。 這樣,您可以使需要渲染的類實現Drawable接口,然后將其作為列表保留在渲染面板中,然后在paintComponent方法中對其進行迭代,並在Drawables上調用draw。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM