2013-05-01 43 views
0

我希望能够将我的JPanel背景之一更改为我创建的图像,并且仍然在其上添加组件,但是它们没有显示出来。如何在绘制的背景上添加JPanel组件

package userInterface; 

import javax.swing.*; 
import java.awt.*; 

@SuppressWarnings("serial") public class BoardPanel extends JPanel { 

    private Image img; 

    public BoardPanel() { 
    img = new ImageIcon("images/board.png").getImage(); 
    JButton button = new JButton("TEST ME"); 
    add(button); 

    Dimension size = new Dimension(img.getWidth(null), img.getHeight(null)); 
    setPreferredSize(size); 
    setMinimumSize(size); 
    setMaximumSize(size); 
    setSize(size); 
    setLayout(null); 
    } 

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

} 

回答

1

究其原因,JButtonJPanel非可视性是你设置JPanel的布局是null

setLayout(null); 

设置布局是null让你设置组件的位置明确这也是非常糟糕的做法。您应该删除该行,并让Swing的内部layout正常工作。
作为附带说明,我想强调的一点,当你正在覆盖paintComponent方法,这个方法的第一个语句必须是JPanel的:-) super.paintComponent(g)

+0

覆盖的getPreferredSize – mKorbel 2013-05-01 21:59:53

1

如果覆盖paintComponent(Graphics g),永远记得打电话super.paintComponent(g)第一。 通过这种方式,通常会被绘的所有东西都会被绘制。

相关问题