2013-03-04 70 views
1

我正在爲兩個Java GUI而煩惱。在Java中設置背景圖像和灰色GlassPane(Swing)

這就是情況:我正在設計一個使用Swing組件的文字遊戲。我有一個主要的JFrame放置一切(我的GUI類擴展JFrame)。有兩件事我想要做的:

1st:我想設置一個圖像作爲主框架的背景圖像,它必須顯示在所有組件後面。我已經四處搜尋,但還沒有找到工作解決方案。我試着做一個擴展的BackGroundPanel類,但是當我創建一個BackGroundPanel的實例時,我不知道如何使它成爲框架的背景......我也沒有找到一個好方法來從一個'圖像'目錄在我src文件夾...

第二:程序啓動時用戶正在迎接一個未修飾的JDialog,主框架需要被停用的,這我想通了,但我也想使它有點黑。我相信應該可以使用GlassPane,但我不知道如何將GlassPane設置爲使用一種顏色覆蓋面板...

幫助將不勝感激,我不認爲我有任何有用的代碼分享,但我認爲上面解釋的情況給出了一個總體思路?我只想讓某人讓我走上正軌,這樣我就可以繼續工作了!謝謝!

回答

0

那麼你的第一個問題,你可以使用一個標籤,並設置它的圖標:

JLabel lblimage = new JLabel(""); 

lblimage.setIcon(new ImageIcon(Main.class.getResource("/img/background.png"))); 
lblimage.setBounds(0, 0, 794, 711); //size of frame 

contentPane.add(lblimage); //bottom 
contentPane.add(component1); //middle low 
contentPane.add(component2); //middle top 
contentPane.add(component3); //top 

爲你的第二個問題..你可能做同樣的事情,只是使用的圖像與純色並降低透明度,並放置在其他組件上(不確定此解決方案)。

+0

嗯,但我已經在我的主機上有其他面板和組件,我怎麼能把JLabel放在它們後面呢? – 2013-03-04 17:41:31

+0

@E。 V. d。 B.爲了更好的幫助,請儘快發佈[SSCCE](http://sscce.org/),簡短,可運行,可編輯,僅僅是關於你的問題的描述,否則這裏的一切都是黑暗的鏡頭 – mKorbel 2013-03-04 17:51:16

+0

我編輯答案演示如何。您可以將contentPane替換爲將所有組件添加到的任何內容。 – ck1221 2013-03-04 17:51:36

2

我的主類延伸JFrame它有一個BorderLayout

將你的BorderLayout加到一個JPanel上, GridLayout()

  1. AnimationTest說明繪製組件後面的背景圖像。

  2. Translucent示例說明了使用AlphaComposite;另請參閱此AlphaTest

+0

首先謝謝,但我仍然不知道該怎麼做,因爲添加到gridlayout只會創建新的單元格?你可以添加一個面板,並在一個網格佈局單元的主面板之上? – 2013-03-04 18:34:49

+0

不,'GridLayout()'創建一個行爲與'BorderLayout.CENTER'非常相似的單元。 – trashgod 2013-03-04 18:36:39

+0

另外,不要擴展'JFrame';擴展'JPanel'或'JComponent'並覆蓋'paintComponent()'。 – trashgod 2013-03-04 18:39:19