簡體   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