繁体   English   中英

super.paint()在图像上不可见

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM