我使用下面的代码每x次打开一个帧-1,但当我转到另一个帧并返回时,计时器会自行重置,导致第二个帧-1出现这是有问题的,因为我一次只需要1个尝试使用CCD_。
这是代码:
int timerTimeInMilliSeconds2 = 30000;
javax.swing.Timer timer2 = new javax.swing.Timer(timerTimeInMilliSeconds2, new ActionListener() {
public void actionPerformed(ActionEvent e) {
Pop p=new Pop();
p.setVisible(true);
new Thread(){
@Override
public void run() {
try {
Thread.sleep(5000); // time after which pop up will be disappeared.
p.dispose();
} catch (InterruptedException e) {
e.printStackTrace();
}
};
}.start();
}
});
timer2.start();
不要将Pop p
对象作为方法内部的局部变量,而是将其作为类的成员。当actionPerformed
触发时,检查它是否为null(一个比p
更好的名称也是个好主意),并且只在为null时创建窗口。
无论如何,您应该使用另一个Timer
,而不是创建一个线程来在5秒钟后处理窗口。
您的问题有点不清楚。正如我所理解的,您需要创建Pop p
作为您定义的类的成员变量,而不是方法actionPerformed
的局部变量,这样您就可以在触发它之前检查对象是否为null
。