一个JAVA程序,第2次和N次运行都相同,但和第1次不同
classTimeTest{publicstaticvoidmain(String[]args){ActionListenerlistener=newTimePrinte...
class TimeTest
{
public static void main(String[]args)
{
ActionListener listener = new TimePrinter();
Timer t = new Timer(10000,listener);
t.start();
JOptionPane.showMessageDialog(null,"quit pprogram?");
System.exit(0);
}
}
class TimePrinter implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Date now = new Date();
System.out.println("at the tone"+now);
Toolkit.getDefaultToolkit().beep();
}
}
第一次的时候按照程序原来的意思,10秒后跳出对话筐,但是第2次和以后,无论怎么执行,或者编译在执行,都是瞬间跳出对话筐,这个定时器不起作用了 展开
{
public static void main(String[]args)
{
ActionListener listener = new TimePrinter();
Timer t = new Timer(10000,listener);
t.start();
JOptionPane.showMessageDialog(null,"quit pprogram?");
System.exit(0);
}
}
class TimePrinter implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Date now = new Date();
System.out.println("at the tone"+now);
Toolkit.getDefaultToolkit().beep();
}
}
第一次的时候按照程序原来的意思,10秒后跳出对话筐,但是第2次和以后,无论怎么执行,或者编译在执行,都是瞬间跳出对话筐,这个定时器不起作用了 展开
3个回答
展开全部
定时器Timer启动后每次经过 delay 毫秒后,该 Timer 将激发一个其侦听器的操作事件,即执行listener里面的actionPerformed{}代码。默认情况下,调用 stop 方法之前此循环将重复进行。如果希望计时器只激发一次,则调用该计时器上的 setRepeats(false)。而在上面所写的代码中,程序执行t.start()之后紧接着就是跳出对话框的代码,这样的话对话框就会即刻跳出,如果要达到楼主所说的效果,把JOptionPane.showMessageDialog(null,"quit pprogram?"); 放到actionPerformed{}里面即可。当然后面得有个延迟主程序的代码,否则main将一下子执行到最后,直接结束,也就等不到timer计时器的触发事件了。(试试:源程序不变,仅仅在actionPerformed里面添加一行:JOptionPane.showMessageDialog(null,"timer!");)
展开全部
import javax.swing.JOptionPane;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.awt.*;
class TimeTest
{
public static void main(String[]args)
{
final Timer t = new Timer();
t.schedule(new TimerTask(){
public void run(){
JOptionPane.showMessageDialog(null,"quit pprogram?");
Date now = new Date();
System.out.println("at the tone"+now);
Toolkit.getDefaultToolkit().beep();
System.exit(0);
}
},10000);
System.out.println("asdf");
//System.exit(0);
}
}
改成这样
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
import java.awt.*;
class TimeTest
{
public static void main(String[]args)
{
final Timer t = new Timer();
t.schedule(new TimerTask(){
public void run(){
JOptionPane.showMessageDialog(null,"quit pprogram?");
Date now = new Date();
System.out.println("at the tone"+now);
Toolkit.getDefaultToolkit().beep();
System.exit(0);
}
},10000);
System.out.println("asdf");
//System.exit(0);
}
}
改成这样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为第一次是编译,第二次是运行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询