gpt4 book ai didi

java 复选框被选中?然后循环

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

我有复选框,我想要

  1. 如果选中复选框:每 10 分钟循环一次
  2. 取消选中:退出循环

下面是复选框的事件:-

final JCheckBox rfh = new JCheckBox("Auto Refresh");
toolbar.add(rfh);
toolbar.setAlignmentX(0);
rfh.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
try {
while ( rfh.isSelected() ) {
if (rfh.isSelected()) {
// ((JCheckBox)evt.getSource()).isSelected()
JOptionPane.showMessageDialog(toolbar,"thank you for using java");
Thread.sleep(5 * 1000);
} else {
JOptionPane.showMessageDialog(toolbar,"not selected");
}
}
} catch (Exception e) {
}
}
});

最佳答案

首先看一下:

基本上,Swing 是单线程环境,因此不要尝试在 ActionPerformed 方法中使用循环和 Thread.sleep

两个最简单的解决方案是......

使用 Swing 计时器

Swing 计时器将允许您设置定期的回调。此回调将在事件调度线程的上下文中执行,非常适合更新 UI。

它可以轻松启动和停止。

缺点是,它是在 EDT 的上下文中通知的,这使得它成为调用数据库的糟糕选择,这可能导致程序每次调用时都会“卡顿”...

或使用SwingWorker

SwingWorker 提供了在后台执行工作的方法,并且提供了可以轻松更新 UI 的功能。

基本上,您需要设置某种循环(在 worker doInBackground 方法内)并使用 Thread.sleep 等待规定的时间段。一旦Thread.sleep返回,您将调用数据库,构建数据模型并将其传递给publish方法。

在 EDT 上下文中调用的 process 方法中,您将处理这些结果并相应地更新您的表模型...

这样做的缺点是您需要设计一种方法来停止(或关闭)工作人员,并且如果您愿意的话,可以重新启动...

关于java 复选框被选中?然后循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25152523/

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