Java 使用superg重新喷漆会导致空白。。网虫

Java 使用superg重新喷漆会导致空白。。网虫,java,swing,paint,Java,Swing,Paint,我不知道这里的问题是什么,我刚刚开始编码,我在互联网上搜索了很多遍,找不到答案。请不要让答案听起来很复杂。谢谢 我正在尝试做一个马里奥式的游戏,这似乎是一个障碍,但很快我就会变得更好 int x, y; public class AL extends KeyAdapter { public void keyPressed(KeyEvent e) { int KeyCode = e.getKeyCode(); if(KeyCode == e.VK_L

我不知道这里的问题是什么,我刚刚开始编码,我在互联网上搜索了很多遍,找不到答案。请不要让答案听起来很复杂。谢谢 我正在尝试做一个马里奥式的游戏,这似乎是一个障碍,但很快我就会变得更好

int x, y;



public class AL extends KeyAdapter {
    public void keyPressed(KeyEvent e) {
        int KeyCode = e.getKeyCode();

        if(KeyCode == e.VK_LEFT) {
            x--;
        }
        if(KeyCode == e.VK_RIGHT) {
            x++;
        }
        if(KeyCode == e.VK_UP) {
            y--;
        }
        if(KeyCode == e.VK_DOWN) {
            y++;
        }
    }
    public void KeyReleased(KeyEvent e) {

    }
}



public Wesley() {
    addKeyListener(new AL());

    setTitle("Wesley and the interuption");
    setSize(500, 500);
    setResizable(false);
    setVisible(true);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    x = 150;
    y = 150;
}

@Override
public void paint(Graphics g) {
    g.fillOval(x, y, 15, 15);

    repaint();

}

public static void main(String[] args) {
    new Wesley();
}
  • 不要在
    paint
    方法中重新绘制()。您可能希望使用
    keyXxx
    方法之一来完成此操作

  • 您正在通过调用
    super.paint(g)来打破绘制链绘制方法中的code>。所以一定要叫它叫它叫它

    @Override
    public void paint(Graphics g) {
        super.paint(g);
    }
    
  • 同时使用
    @Override
    注释,这样您就知道您正确地重写了一个方法。此
    keyreased
    不是对钥匙释放功能的有效覆盖。你的肠衣不对。因此,密钥释放不会起任何作用


旁注

  • 研究如何与Swing应用一起使用特定的关键功能。您可能在
    KeyListener

  • 看。最好在
    JComponent
    JPanel
    @Override
    paintComponent
    上绘制,并调用
    super.paintComponent
    而不是
    paint

  • 从中运行Swing应用程序。看

  • setVisible
    setLocationXxx
    之后。我打赌你一定想知道为什么你的用户界面会在左上角闪烁,然后移动到中间。这就是为什么

      • 不要在
        paint
        方法中重新绘制()。您可能希望使用
        keyXxx
        方法之一来完成此操作

      • 您正在通过调用
        super.paint(g)来打破绘制链绘制方法中的code>。所以一定要叫它叫它叫它

        @Override
        public void paint(Graphics g) {
            super.paint(g);
        }
        
      • 同时使用
        @Override
        注释,这样您就知道您正确地重写了一个方法。此
        keyreased
        不是对钥匙释放功能的有效覆盖。你的肠衣不对。因此,密钥释放不会起任何作用


      旁注

      • 研究如何与Swing应用一起使用特定的关键功能。您可能在
        KeyListener

      • 看。最好在
        JComponent
        JPanel
        @Override
        paintComponent
        上绘制,并调用
        super.paintComponent
        而不是
        paint

      • 从中运行Swing应用程序。看

      • setVisible
        setLocationXxx
        之后。我打赌你一定想知道为什么你的用户界面会在左上角闪烁,然后移动到中间。这就是为什么

          • 不要在
            paint
            方法中重新绘制()。您可能希望使用
            keyXxx
            方法之一来完成此操作

          • 您正在通过调用
            super.paint(g)来打破绘制链绘制方法中的code>。所以一定要叫它叫它叫它

            @Override
            public void paint(Graphics g) {
                super.paint(g);
            }
            
          • 同时使用
            @Override
            注释,这样您就知道您正确地重写了一个方法。此
            keyreased
            不是对钥匙释放功能的有效覆盖。你的肠衣不对。因此,密钥释放不会起任何作用


          旁注

          • 研究如何与Swing应用一起使用特定的关键功能。您可能在
            KeyListener

          • 看。最好在
            JComponent
            JPanel
            @Override
            paintComponent
            上绘制,并调用
            super.paintComponent
            而不是
            paint

          • 从中运行Swing应用程序。看

          • setVisible
            setLocationXxx
            之后。我打赌你一定想知道为什么你的用户界面会在左上角闪烁,然后移动到中间。这就是为什么

              • 不要在
                paint
                方法中重新绘制()。您可能希望使用
                keyXxx
                方法之一来完成此操作

              • 您正在通过调用
                super.paint(g)来打破绘制链绘制方法中的code>。所以一定要叫它叫它叫它

                @Override
                public void paint(Graphics g) {
                    super.paint(g);
                }
                
              • 同时使用
                @Override
                注释,这样您就知道您正确地重写了一个方法。此
                keyreased
                不是对钥匙释放功能的有效覆盖。你的肠衣不对。因此,密钥释放不会起任何作用


              旁注

              • 研究如何与Swing应用一起使用特定的关键功能。您可能在
                KeyListener

              • 看。最好在
                JComponent
                JPanel
                @Override
                paintComponent
                上绘制,并调用
                super.paintComponent
                而不是
                paint

              • 从中运行Swing应用程序。看

              • setVisible
                setLocationXxx
                之后。我打赌你一定想知道为什么你的用户界面会在左上角闪烁,然后移动到中间。这就是为什么


              我认为Weasly是从JFrame扩展而来的。通常应该避免重写paint,尤其是基于窗口的类,因为它们不是双缓冲的,这就是造成闪烁的原因。相反,使用类似JPanel的东西并覆盖其paintComponent,假设Weasly是从JFrame扩展而来的。通常应该避免重写paint,尤其是基于窗口的类,因为它们不是双缓冲的,这就是造成闪烁的原因。相反,使用类似JPanel的东西并覆盖其paintComponent,假设Weasly是从JFrame扩展而来的。通常应该避免重写paint,尤其是基于窗口的类,因为它们不是