gpt4 book ai didi

java - 如何选择时间/日期并将其放入计时器任务中?

转载 作者:行者123 更新时间:2023-12-01 09:17:20 25 4
gpt4 key购买 nike

由于我更正了对某些功能而不是其他功能的使用,因此我发布了此内容。我尝试使用 JSpinner 选择日期和时间,然后将其放入计时器中,触发器必须是我选择的日期和时间。

我如何使用它通过移动箭头来更改时间并将日期和时间放入计时器中?

    import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.SpinnerDateModel;
import javax.swing.SpinnerModel;
import java.util.Calendar;
import java.util.Date;
import javax.swing.Timer;

public class SpinnerDateSample {
public static void main(String args[]) {
JFrame frame = new JFrame("JSpinner Sample");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


SpinnerModel model1 = new SpinnerDateModel();
JSpinner spinner1 = new JSpinner(model1);
spinner1.addChangeListener(new CalendarListener());

JLabel label1 = new JLabel("Dates/Date");
JPanel panel1 = new JPanel(new BorderLayout());
panel1.add(label1, BorderLayout.WEST);
panel1.add(spinner1, BorderLayout.CENTER);
frame.add(panel1, BorderLayout.CENTER);

frame.setSize(200, 90);
frame.setVisible(true);
}
}

private class CalendarListener implements ChangeListener {
public void stateChanged(ChangeEvent e) {
JSpinner jSpinner = (JSpinner) e.getSource();
Date date = (Date) jSpinner.getValue();
long delay = date.getTime() - System.currentTimeMillis();
timerStart();
if (delay > 0) {
timer.setInitialDelay((int) delay);
timer.restart();
}
}
}

TimerStart() {
this.timer = new Timer(Integer.MAX_VALUE, (ActionEvent evt) -> {
System.out.println("okey");
});}

最佳答案

TimerTask 是一个遗留类,您可以使用 ScheduledExecutorService 按计划的时间间隔执行任务,这是最佳实践,如下所示:

Selection6Runable 类:

public class Selection6Runable implements Runnable {
public void run() {
//Add code for Selection6 Logic,
// this code will be run everytime when the scheduler runs
}
}

使用上面的代码:

ScheduledExecutorService scheduledService= Executors.newScheduledThreadPool(1);
//Change the below time interval according
//to the data received i.e., CalDcB.getSelectedItem()
scheduledService.scheduleAtFixedRate(()-> new Selection6Runable(),
0, 1000L, TimeUnit.MILLISECONDS);

你可以看看here了解更多详情

关于java - 如何选择时间/日期并将其放入计时器任务中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40449871/

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