Java中的invokeLater和abstract method()

时间:2014-06-03 17:23:56

标签: java jpanel

我想移动我的JPanel。但是我想要平稳运动,但是当我把我的方法放进去时

void changeLocationCard()
{
  new Thread() {
    public void runCard() {
        for(int i = 0; i < 300; i++) {

            SwingUtilities.invokeLater(new Runnable() {

            });
            pause(500);
            }
        }

}.runCard();
}

我遇到问题&#34;不是抽象的,并且不会覆盖在Runnable中运行的抽象方法。

宣言类

公共类GamePanel扩展了javax.swing.JPanel {}

有人知道为什么吗?

2 个答案:

答案 0 :(得分:0)

编译器正在抱怨,因为你在这里声明了匿名类:

        SwingUtilities.invokeLater(new Runnable() {

        });

不是抽象的,也没有实现run方法。

那就是说,为什么要创建一个Thread来调用runCard方法?

答案 1 :(得分:0)

尝试:

public void changeLocationCard() {
    new Thread(new Runnable() {
        public void run() {
            for(int i = 0; i < 300; i++) {
                SwingUtilities.invokeLater(new Runnable() {
                    public void run () {
                        runCard();
                    }
                });
                pause(500);
            }
        }
    }).start();
}

或者从Swing-Api查看TimerTask以获取更多基于API的方法。