用superg重新绘制会导致消隐... netbeans

时间:2014-02-28 03:36:26

标签: java swing paint

我不知道这里有什么问题,我刚刚开始编码,我在互联网上搜索过,找不到答案,请不要让答案听起来很复杂。谢谢 我正试图制作一个类似马里奥的游戏而且似乎挡路了,但很快我就会好起来

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();
}

1 个答案:

答案 0 :(得分:3)

  • {/ 1}}方法中 repaint()。您可能希望使用paint方法之一。

  • 您在keyXxx方法中通过而不是调用super.paint(g);打破了颜料链。所以一定要打电话给它。

    paint
  • 还可以使用@Override public void paint(Graphics g) { super.paint(g); } 注释,以便您知道正确覆盖了某个方法。此@Override不是密钥发布功能的有效覆盖。你的外壳是错的。所以关键版本什么都不做。


附注

  • 使用带有Swing应用程序的Key Bindings查看特定的关键功能。您可能会遇到KeyReleased

  • 的焦点问题
  • 请参阅Performinf Custom Painting。最好在KeyListenerJComponentJPanel @Override上进行绘制,并调用paintComponent super.paintComponent

  • Event Dispatch Thread运行Swing应用。请参阅Intial Threads

  • paint setVisible之后。我打赌你想知道为什么你的ui在左上角闪烁,他们移动到中心。 就是原因。