gpt4 book ai didi

java - 如何在java中删除以前的计时器?

转载 作者:行者123 更新时间:2023-11-30 04:47:16 25 4
gpt4 key购买 nike

我已经实现了一个计时器来调用我的alert()方法。计时器的持续时间是从数据库中检索的。当我将持续时间设置为 1 分钟时,计时器每隔一分钟调用一次alert()。当我再次将持续时间设置为 5 分钟时,1 分钟计时器不会停止。所以现在我有 2 个正在运行的计时器。如何删除之前的计时器?谢谢。

private void getDuration() 
{
durationTimer = new javax.swing.Timer(durationDB, new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
alert();
}
});
durationTimer.stop();

try
{
// Connection to the database
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/smas","root","root");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM alertduration");

while (rs.next())
{
durationDB = rs.getInt("duration");
}

con.close();
}

catch(Exception ea)
{
JOptionPane.showMessageDialog(watchlist, "Please ensure Internet Connectivity ", "Error!", JOptionPane.ERROR_MESSAGE);
}


durationTimer = new javax.swing.Timer(durationDB, new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
alert();
}
});

durationTimer.start();

最佳答案

完成第一个计时器后,调用 stop() 方法。将计时器设置为全局并重复使用它也可能是值得的,而不是每次持续时间发生变化时都创建一个新计时器。请参阅:http://docs.oracle.com/javase/6/docs/api/javax/swing/Timer.html

示例:

durationTimer = new javax.swing.Timer(duration, new ActionListener() {               
@Override
public void actionPerformed(ActionEvent e) {
alert();
}
});

durationTimer.start();

//wait for duration to change
durationTimer.stop();
durationTimer.setDelay(duration);
durationTimer.start();

关于java - 如何在java中删除以前的计时器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10688643/

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