JFrame没有绘制任何从其他JFrame开始的数字

时间:2013-01-05 20:19:09

标签: java swing jpanel draw event-dispatch-thread

我是Java(C#程序员)的新手,我遇到了一个我不明白的问题。抱歉蹩脚的英语。 =)

我正在开发一个简单的Snake游戏,我有不同的类,枚举等。我的问题是,如果我用Menu类中的游戏调用JFrame,它什么都不做。我可以通过代码调试,但它不会绘制任何东西。如果我从Main方法直接启动Game类,则没有问题。

我认为这是一个简单的错误,我只是愚蠢地看到它。

这里是代码:

鼠标事件:

else if (mouseX > 75 && mouseX < 175 && mouseY > 260
                && mouseY < 285) {
            startGame();
菜单类中的

startGame方法:

public void startGame(){
    this.setVisible(false);
    game = new Game();
}

游戏构造函数:

public Game() {
    super("Snake V 0.1");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setSize(940, 620);
    setLocation(200, 200);
    addKeyListener(keyListener);
    setVisible(true);
    //this.createBufferStrategy(2);

    zeichnung.addFigur(new Field(0, 0));
    snake = new Snake(40, 300, 1);
    zeichnung.addFigur(snake);
    zeichnung.addFigur(new Diamond());

    this.getContentPane().add(jpanel);

    this.repaint();

    this.Intervall();
}

INTERVALL:

public void Intervall() {
    while (true) {
        try {
            snake.direction = keyListener.getDirection();
            zeichnung.checkCollision(snake);
            snake.move();
            this.repaint();
            Thread.sleep(150);
        } catch (InterruptedException e) {
            // TODO: handle exception
        }
    }
}

正如我之前所说。如果我直接从Main方法启动游戏类(简单的游戏游戏=新游戏();)没有问题。

我希望我不会忘记任何重要信息。

1 个答案:

答案 0 :(得分:1)

它在任何Swing GUI中根本不起作用。

Thread.sleep()杀死重画和聆听。

在此处查看最终帖子,例如问题

http://www.coderanch.com/t/600642/GUI/java/update-getGraphics

使用Swing Timer