這個問題已經有很多問題,但在任何地方答案都不盡人意。我可以得到一個JFrame顯示背景圖像只是通過擴展的JPanel和壓倒一切的paintComponent細,像這樣:JFrame中的背景圖片
class BackgroundPanel extends JPanel {
private ImageIcon imageIcon;
public BackgroundPanel() {
this.imageIcon = Icons.getIcon("foo");
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(imageIcon.getImage(), 0,0,imageIcon.getIconWidth(),imageIcon.getIconHeight(),this);
}
}
但現在,你如何在該背景上添加組件? 當我去
JFrame w = new JFrame() ;
Container cp = w.getContentPane();
cp.setLayout(null);
BackgroundPanel bg = new BackgroundPanel();
cp.add(bg);
JPanel b = new JPanel();
b.setSize(new Dimension(30, 40));
b.setBackground(Color.red);
cp.add(b);
w.pack()
w.setVisible(true)
它顯示紅色的小方(或任何其他組件),而不是背景,但是當我刪除cp.setLayout(null);
,背景顯示出來,但不是我的其他組件。我猜這與paintComponent沒有被null LayoutManager調用有關,但我完全不瞭解LayoutManagers是如何工作的(這是一個專門針對大學的項目,並且該任務明確指出不使用LayoutManager) 。
當我讓圖像背景必須顯示空(等,transparant(??))紅色正方形顯示,所以它可能是背景實際上高於我的其他組件。
有沒有人有任何想法?
感謝
希望這個[線程](http://stackoverflow.com/a/11428289/1057230)也可能有一些幫助,在主題:-) – 2013-05-26 04:03:38