gpt4 book ai didi

java - 在指定日期执行 Java Swing 操作

转载 作者:行者123 更新时间:2023-12-02 03:36:20 31 4
gpt4 key购买 nike

我正在尝试创建一个有两个选项的程序: - 倒计时后执行特定任务(以分钟为单位)。 - 在选定的日期执行特定任务。 两者都使用jSpinners,但是我不知道如何在特定日期执行操作,这是下面的代码,提前谢谢您!

protected Object doInBackground() throws Exception {
Timer t = new Timer(0, new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});

//Checking state of CheckBoxes (one cancels the other)
if(jCheckBox2.isSelected()) {
try {
int delay =(int) jSpinner2.getValue();
jCheckBox1.setSelected(false);
Thread.sleep(delay*60000); //To delay the code from miliseconds to minutes
} catch (InterruptedException ex) {
Logger.getLogger(App_Gui.class.getName()).log(Level.SEVERE, null,
ex);
}
}
else if (jCheckBox1.isSelected()) {
Date delay2 = (Date) jSpinner1.getValue();
jCheckBox2.setSelected(false);
Thread.sleep(delay2); //What should I put here instead of Thread.sleep()???????

}

//If all is right, start the timer
t.start();
t.setRepeats(false);
//Popup dialog
JDialog dialog = new JDialog();
dialog.setLocation(700, 300);
dialog.setSize(600, 400);
dialog.setVisible(true);
//Speed of color changing
try {

Thread.sleep(jSlider1.getValue());
} catch (InterruptedException ex) {
Logger.getLogger(App_Gui.class.getName()).log(Level.SEVERE, null,
ex);
} //Setting the color
dialog.getContentPane().setBackground(jLabel2.getBackground());

dialog.setModal(true);
Assignment_Tajmer_Aplikacija.f.setVisible(false);

return null;
}
protected void done() {
System.out.println("Done!");
}
};
sw.execute();



}

private void jSlider1StateChanged(javax.swing.event.ChangeEvent evt) {
// TODO add your handling cosadde here:
jSlider1.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
JSlider source = (JSlider) e.getSource();
//System.out.println(source.getValue());

}
});
}

最佳答案

你有两个选择:

  1. 您计算当前日期和目标日期之间的时间差(以毫秒为单位)。这样你就可以启动 Swing 计时器了。类似 myDate.getTime() - Sytem.currentTimeMillis() (可能并不总是正确的)
  2. 您使用一个可以为您完成此操作的库(例如 Quartz )。在这种情况下,您需要使用方法 SwingUtilities.invokeLater(Runnable) 将您的作业与 Swing 线程同步。 .

并且永远不要使用Thread.sleep()在 Swing 应用程序中。相反,启动一个计时器。

关于java - 在指定日期执行 Java Swing 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37413534/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com