为什么JAVA paint()方法不起作用?

时间:2015-07-18 14:23:44

标签: java jframe paint

任何人都可以解释为什么这段代码没有显示20 x 20的白色椭圆形? 我添加了评论,因此您无需进行太多搜索。我认为我在paint方法中做错了什么。或者是别的什么? 这是代码:

public class Dodge extends JFrame{      //EXTENDED JFRAME

public Dodge(){
    JPanel panel = new JPanel();
                                                     //
    panel.setBackground(Color.BLACK);               //
                                                   //
    add(panel);                                   //
    setTitle("Dodging game");                    //
    setDefaultCloseOperation(EXIT_ON_CLOSE);    //  GUI SETUP
    setSize(500, 400);                         //
    setLocationRelativeTo(null);              //
    setResizable(true);                      //

}

public void paint(Graphics g){
    g.setColor(Color.BLACK);
    g.fillRect(0, 0, getWidth(), getHeight());

    g.setColor(Color.WHITE);                   //THIS METHOD SHOULD GIVE ME AN OVAL
    g.fillOval(5, 5, 20, 20);

    repaint();
}


public static void main(String[] args){             //

    SwingUtilities.invokeLater(new Runnable() {    // MAIN THREAD

        @Override                                 //
        public void run() {
            new Dodge().setVisible(true);        //

我是初学者,所以请明白错误

另外请解释一下,当我甚至没有打电话时,这种方法如何引起程序的变化?

1 个答案:

答案 0 :(得分:4)

在呈现Component时会自动调用

paint()方法。

您的椭圆没有显示,因为它隐藏在框架或标题栏的工具栏后面。 (最重要的是你所谓的)。

将fillOval更改为g.fillOval(50, 50, 20, 20);,您将看到它。

另外,如果覆盖它,请务必致电super.paint(g)

另外,请勿使用repaint()方法拨打paint()