有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

有人能解释一下为什么这个代码没有显示一个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) 个答案

  1. # 1 楼答案

    当呈现组件时,会自动调用paint()方法

    您的椭圆形不会显示,因为它隐藏在框架或标题栏的工具栏后面。(你管它叫什么名字,排在第一位)

    将圆角改为g.fillOval(50, 50, 20, 20);,你就会看到它

    此外,如果您要重写super.paint(g),您应该始终调用它

    另外,不要从paint()方法调用repaint()