代码之家  ›  专栏  ›  技术社区  ›  Zero Cipher

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

  •  1
  • Zero Cipher  · 技术社区  · 9 年前

    有人能解释为什么这个代码没有显示一个20 x 20的白色椭圆形吗? 我添加了评论,所以你不必搜索太多。我想我在油漆方法上做得不对。还是其他什么? 代码如下:

    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 回复  |  直到 9 年前
        1
  •  4
  •   Codebender    9 年前

    paint() 方法在呈现组件时自动调用。

    椭圆不会显示,因为它隐藏在框架或标题栏的工具栏后面。(最上面的一个你怎么称呼它)。

    将fillOval更改为 g.fillOval(50, 50, 20, 20); 你会看到的。

    此外,您应该随时致电 super.paint(g) 如果您覆盖它。

    另外,不要打电话 repaint() 从您的 油漆() 方法