2015-03-13 58 views
0

我想創建模擬類型應用程序,在我的JFrame中我想創建兩個圖層,一個用於繪製一次並保持相同的背景,頂層需要處理除了它們之外的所有動畫和活動對象都是透明的,所以您可以看到底下的背景。在Java中用於遊戲/模擬類型的分層面板應用程序

我的問題是:

我可以使用JPanels實現這一目標,apperently JPanels在彼此的頂部不會層,這是正確的?所有從Jlayers看到的Jlayers大都是裝飾性的實現,它是否適合在其中運行一個擺動計時器並在父級頂部重新繪製多個項目?

頂層必須是背景層的子級還是可以在JFrame內創建?

是否有其他的鞦韆組件可以實現這一目標?

非常感謝您的幫助。

+0

如果你想分層多個組件,最好使用'JLayeredPane'。還有一個選項可以做,也就是說'GlassPane'帶'JPanel',因爲您想多次重繪它或者說渲染組件,'JPanel'將允許您除了背景不會影響'glasspane'。但是,如果嘗試刷新整個「JFrame」,那麼確保在渲染組件時,它將是GUI的性能問題,它可能有點「laggy」。您可以使用Swing的計時器類來執行基於代碼的操作。 – 2015-03-13 19:56:07

+0

我有一個擺動計時器的地方和JFrame不會被刷新,所以我應該在性能上很好,我會嘗試使用JLayeredPane秒殺,看看它是否工作,歡呼聲。 – 2015-03-13 20:04:12

回答

0

我可以使用JPanels來實現這一點,顯然JPanels不會層層疊疊,這是正確的嗎?

您可以在每個面板上使用BorderLayout,然後將一個面板添加到另一個面板。您還需要使頂部面板不透明。可能不是最好的設計。

Jlayers大多是裝飾性實現 是的,JLayer是用於裝飾。

JLayeredPane可能是你在找什麼。它將允許您使用多個圖層,並將爲您管理圖層。有關更多信息和工作示例,請閱讀Swing教程How to Use Layered Panes中的部分。

+0

我已經創建了jlayeredPane並且它可以工作,但是現在的問題是透明性,頂層是默認的灰色,並且看不到背景,setOpaque();不解決它? – 2015-03-13 20:30:53

+0

@ user3081855,我建議你需要使它不透明。這是'setOpaque(false)'。 – camickr 2015-03-13 20:59:18