可能重複:
paintComponent() never executes on a JFrame獲得在Swing GUI的空白窗口
我使用下面的代碼dispaly兩個字符串,我直接把他們拉在jfame而不是增加他們的作爲組分或到jpanel.But爲什麼我會得到一個空白的窗口,而不是領Strings.Where我錯了?
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class SimpleAttributes extends JFrame{
SimpleAttributes()
{
super("Simple Attributes");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
//setUndecorated(true);
Container cp=this.getContentPane();
cp.setBackground(new Color(0,200,0,0));
setVisible(true);
}
public void paintComponent(Graphics g)
{
Graphics2D g2=(Graphics2D)g.create();
g2.setColor(Color.RED);
g2.drawString("One", 10, 10);
g.drawString("Two", 10,40);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
SwingUtilities.invokeLater(new Runnable(){public void run(){new SimpleAttributes();}});
}
}
是的。使用'@ Override'註釋的另一個原因。 1+爲好的提升。此外,原始海報應該在JPanel內部繪製,並使用JPanel的「paintComponent(...)」覆蓋,而不是直接在JFrame中繪製。 – 2012-08-08 16:59:03
那麼,有沒有辦法從油漆中繪製這兩個字符串(圖形g) – 2012-08-08 17:01:38
+1好點子:) – 2012-08-08 17:01:51