2012-11-02 76 views
0

我的問題是背景圖像覆蓋了我在我的JPanel中使用的所有ImageIcons。例如,在這段代碼片段中,我試圖將setIcon設置爲面板中的其中一個標籤。但背景圖像涵蓋了它。我怎樣才能解決這個問題?如果我在paint方法之外或其內部使用label.setIcon(),則無關緊要。ImageIcons not displayed - JAVA

public void paint(Graphics g) { 
     super.paint(g);  
     g.drawImage(backgroundImage, 0, 0, this); 
      label1.setIcon(iconImage); 

} 

在此先感謝!

+2

重寫的方法是'paintComponent()',而不是'paint()'。該圖標不應該在'paintComponent()'方法中設置。並且在調用'super.paintComponent()'之前嘗試繪製圖像,以便在背景圖像上創建「正常」繪畫。 (雖然沒有測試,這就是爲什麼我不把這作爲答案) –

+0

或重寫'paintIcon()' – mKorbel

回答

0

嘗試將label.seticon放置在覆蓋的方法之外。 參考:

How to set JFrame or JPanel Background Image in Eclipse Helios

可以作爲實現它;

public void paintComponent(Graphics g) { 
g.drawImage(img, 0, 0, null); 
} 

OR

public void paint(Graphics g) { 
if (img!=null) g.drawImage(img, 0, 0, null); 
super.paint(g); 
} 
+1

你需要尊重油漆鏈。通過不打電話super.paint您違反了這個合同。繪製方法做了很多重要的工作(例如繪製子組件,雙緩衝(就JComponents而言)和不透明度),你絕不應該避免調用它們的超級實現 - 恕我直言 – MadProgrammer

+0

Got It!謝謝@MadProgrammer。 – Purnesh

1
  1. 設置你的基地小組來BorderLayout
  2. 佈局添加JLabel在底座面板,它的圖標設置爲背景圖片
  3. 設置佈局如果JLabel要什麼你需要
  4. 添加rema將組件粘貼到此標籤