Java 如何创建用户空闲5分钟后弹出的对话框?(爪哇)
我有一个对话框,它是:Java 如何创建用户空闲5分钟后弹出的对话框?(爪哇),java,swing,time,joptionpane,Java,Swing,Time,Joptionpane,我有一个对话框,它是: JOptionPane.showMessageDialog(null,"Once medicine is given, measure temperature within 5 minutes." ,"Medication" ,JOptionPane.PLAIN_MESSAGE); 当用户按下“ok”时,它会直接进入一个Jframe,要求用户使用滑块输入温度,然后按下一个按钮,进入下一组内容 无论如何,我想在用户按下“ok”后创建一种独特的倒计时,因此在Jframe菜
JOptionPane.showMessageDialog(null,"Once medicine is given, measure temperature within 5 minutes." ,"Medication" ,JOptionPane.PLAIN_MESSAGE);
当用户按下“ok”时,它会直接进入一个Jframe,要求用户使用滑块输入温度,然后按下一个按钮,进入下一组内容
无论如何,我想在用户按下“ok”后创建一种独特的倒计时,因此在Jframe菜单上空闲5分钟后,Jframe顶部应该会出现一个警告对话框,并显示“需要注意”之类的内容
这让我想起了actionListener。但它将由非物理元素调用,时间为5分钟(而不是单击任何按钮)
因此,也许代码应该是这样的:
JOptionPane.showMessageDialog(null,"Once medicine is given, measure temperature within 5 minutes." ,"Medication" ,JOptionPane.PLAIN_MESSAGE);
temperature_class temp = new temperature_class(); // going to a different class where the the Jframe is coded
if (time exceeds 5 minutes) { JOptionPane.showMessageDialog(null, "NEED attention", JOptionPane.WARNING_MESSAGE);}
else { (do nothing) }
代码工作:
JOptionPane.showMessageDialog(null,"measure temp" ,"1" ,JOptionPane.PLAIN_MESSAGE);
int delay = 3000; //milliseconds
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
JOptionPane.showMessageDialog(null,"hurry." ,"Bolus Therapy Protocol" ,JOptionPane.PLAIN_MESSAGE); } };
new Timer(delay, taskPerformer).start();
temperature_class temp = new temperature_class();
然而,我希望它只做一次。那么如何调用set.Repeats(false) 您可以将
定时器任务
与定时器
一起使用:
class PopTask extends TimerTask {
public void run() {
JOptionPane.show...
}
}
然后,在哪里安排任务:
new Timer().schedule(new PopTask(), 1000*60*5);
也可以使用
cancel()
方法取消此类计时器您可以将TimerTask
与计时器一起使用:
class PopTask extends TimerTask {
public void run() {
JOptionPane.show...
}
}
然后,在哪里安排任务:
new Timer().schedule(new PopTask(), 1000*60*5);
也可以使用cancel()
方法取消此类计时器阅读上Swing教程的部分。当显示该对话框时,启动计时器。当对话框关闭时,停止计时器
应使用Swing定时器,而不是TimerTask,这样,如果定时器触发,代码将在EDT上执行。阅读上的Swing教程部分。当显示该对话框时,启动计时器。当对话框关闭时,停止计时器
应使用摆动计时器,而不是计时器任务,这样,如果计时器触发,代码将在EDT上执行。基本上,在显示初始选项窗格后,启动一个。(Ajavax.swing
one)
您还需要一个类级别变量,指示是否已输入临时值
JOptionPane.showMessageDialog(...);
tempHasBeenEntered = false;
Timer tim = new Timer(5 * 60 * 1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!tempHasBeenEntered)
JOptionPane.showMessageDialog("Hey, enter the temp!!");
}
}
tim.setRepeats(false);
tim.start();
一旦用户在表单中输入临时值,您就需要翻转该标志。基本上,在显示初始选项窗格后,启动一个临时值。(Ajavax.swing
one)
您还需要一个类级别变量,指示是否已输入临时值
JOptionPane.showMessageDialog(...);
tempHasBeenEntered = false;
Timer tim = new Timer(5 * 60 * 1000, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (!tempHasBeenEntered)
JOptionPane.showMessageDialog("Hey, enter the temp!!");
}
}
tim.setRepeats(false);
tim.start();
一旦用户在表单中输入temp,您就需要翻转该标志。我不同意使用java.util
timer和timertasks。在处理swing应用程序时,通常最好使用swing计时器。在这种情况下,使用java.util.Timer
或javax.swing.Timer
不会有任何重大区别,因为它们每个都只需要一个线程。在任何情况下,如果您真的想要模拟行为,那么可以使用调用器
。从我个人的经验来看,我已经多次使用TimerTask
来触发各种各样的事情,没有任何问题,但这也是一个品味的问题:)我同意Jinguy,Swing的设计目的是让代码在EDT上执行。记住,你是在给新手提建议。是的,大多数时候你不会有问题,但是为什么要冒险调试一些随机问题呢?是的,没错。通常情况下,最好避免出现问题,但在这种情况下,我认为这并不重要。最重要的是要了解EDT和这些情况,所以基本上是的,OP应该遵循您的建议:)我不同意使用java.util
timer和timertask。在处理swing应用程序时,通常最好使用swing计时器。在这种情况下,使用java.util.Timer
或javax.swing.Timer
不会有任何重大区别,因为它们每个都只需要一个线程。在任何情况下,如果您真的想要模拟行为,那么可以使用调用器
。从我个人的经验来看,我已经多次使用TimerTask
来触发各种各样的事情,没有任何问题,但这也是一个品味的问题:)我同意Jinguy,Swing的设计目的是让代码在EDT上执行。记住,你是在给新手提建议。是的,大多数时候你不会有问题,但是为什么要冒险调试一些随机问题呢?是的,没错。通常情况下,最好避免出现问题,但在这种情况下,我认为这并不重要。最重要的是要了解EDT和这些情况,所以基本上是的,OP应该遵循您的建议:)感谢您提供计时器链接..它可以工作!我想现在swing Timer应该是处理事情的好方法。但是,我希望它只做一次。。。我知道我必须在计时器上使用此设置重复(错误),但是where@Faraz,我会更新我的答案。您需要将计时器保存到一个变量中,您会看到的。感谢您提供计时器链接。它可以工作!我想现在swing Timer应该是处理事情的好方法。但是,我希望它只做一次。。。我知道我必须在计时器上使用此设置重复(错误),但是where@Faraz,我会更新我的答案。您需要将计时器保存到一个变量中,您将看到。