[英]super.paint() not visible over image
我正在建立一个以图像为背景的JFrame。 我重写了paint()方法以在JFrame中绘制该图像,但是当我在Eclipse中启动该应用程序时,添加的JComponent都不可见。 这是我的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);
}
}
不要重写JFrame的paint()方法! 这不是定制绘画的完成方式。
如果您要向框架中添加背景图像,请查看“ 背景面板”中的几种方法。
语句按照您指定的顺序执行。 如果你把g.drawImage
后 super.paint(g);
它会在绘制其他东西之后 (即在其他东西之上 )绘制图像。 就像所有画作一样。 以后绘制的内容将覆盖先前的绘制。
这是一个很好的教程 ,介绍如何设置JFrame的背景。
JLabel background=new JLabel(new ImageIcon("C:\\Users\\Computer\\Downloads\\colorful design.png"));
add(background);
background.setLayout(new FlowLayout());
要么
setLayout(new BorderLayout());
setContentPane(new JLabel(new ImageIcon("C:\\Users\\Computer\\Downloads\\colorful design.png")));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.