Java .setLocation不使用计时器

Java .setLocation不使用计时器,java,swing,nullpointerexception,Java,Swing,Nullpointerexception,我正在创建一个类似“巨魔”的应用程序,用于YouTube视频,我想要一个JFrame每1/2秒在屏幕上跳跃一次 这是我的密码: package troll1; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.JFrame; import javax.swing.Timer; public class tro

我正在创建一个类似“巨魔”的应用程序,用于YouTube视频,我想要一个JFrame每1/2秒在屏幕上跳跃一次

这是我的密码:

package troll1;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.Timer;

public class troll extends JFrame implements ActionListener{
    private static final long serialVersionUID = 1L;

    public static void main(String args[]) {
        troll w1 = new troll();
        w1.setVisible(true);
        w1.setSize(500,500);
    }

    public Random ran;
    public int random;
    public troll w1;
    public Timer t;

    public troll() {
        Timer t = new Timer(500, this);
        t.start();

    }

    @Override
    public void actionPerformed(ActionEvent arg0) {
        Random ran = new Random();

        for(int counter=1; counter<=1;counter++) {
            int random = 1+ran.nextInt(500);
            w1.setLocation(random, random);
        }

    }

}

此外,一旦我消除了这个错误,我将使JFrame在整个屏幕上跳跃,而不仅仅是500500及以下的屏幕。

w1变量始终为null,并且从不进行值化。您可以在actionPerformed中使用它,使其以这种方式工作

 @Override
public void actionPerformed(ActionEvent arg0) {
    Random ran = new Random();

    for(int counter=1; counter<=1;counter++) {
        int random = 1+ran.nextInt(500);
        this.setLocation(random, random);
    }

}
@覆盖
已执行的公共无效操作(操作事件arg0){
Random ran=新的Random();

操作侦听器中的for(int counter=1;counter
w1
)从未实例化。您似乎对变量作用域感到困惑。您的类成员与局部变量同名(main()中的w1)与类中的w1引用不同。与动作侦听器中的
ran
引用相同,与构造函数中的
t
引用相同)。如何,我查看了它,但仍然无法找到。类名应以大写字符开头。“troll”不是正确的类名。
 @Override
public void actionPerformed(ActionEvent arg0) {
    Random ran = new Random();

    for(int counter=1; counter<=1;counter++) {
        int random = 1+ran.nextInt(500);
        this.setLocation(random, random);
    }

}