我正在构建一个以图像为背景的JFrame。我重写了paint()方法以在JFrame中绘制该图像,但是当我在Eclipse中启动应用程序时,我添加的JComponents都不可见。这是我的SSCCE:
public class foo extends JFrame{
Image i = ImageIO.read(new URL("http://pittsburgh.about.com/library/graphics/regatta_balloons-640.jpg"));
foo(){
setSize(100, 100);
add(new JButton("Foo"));
setVisible(true);
}
@Override public void paint(Graphics g){
super.paint(g);
g.drawImage(i, 0, 0, null);
}
}
答案 0 :(得分:1)
不要覆盖JFrame的paint()方法!这不是自定义绘画的方式。
如果您尝试在框架中添加背景图片,请查看Background Panel以了解几种方法。
答案 1 :(得分:0)
语句按您指定的顺序执行。如果您在 g.drawImage
之后放置super.paint(g);
,则会在之后绘制图像,其他内容将被绘制,即 over 其他的东西。这就像所有的画作。你之后绘制的内容将超过之前的平局。
答案 2 :(得分:0)
以下是关于如何设置JFrame背景的好tutorial。
JLabel background=new JLabel(new ImageIcon("C:\\Users\\Computer\\Downloads\\colorful design.png"));
add(background);
background.setLayout(new FlowLayout());
OR
setLayout(new BorderLayout());
setContentPane(new JLabel(new ImageIcon("C:\\Users\\Computer\\Downloads\\colorful design.png")));