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