gpt4 book ai didi

java - Swing 按钮不会立即使用react!我该如何改变它?

转载 作者:搜寻专家 更新时间:2023-11-01 03:58:02 25 4
gpt4 key购买 nike

我已经使用 Netbeans 的可视化编辑器构建了一个表单。当我按下其中一个按钮时,它应该执行以下操作:

  • 将其设置为禁用
  • 执行一项需要一些时间的任务
  • 任务完成后,按钮将再次启用

但是,会发生以下情况:

  • 按钮保持按下状态直到任务完成
  • 任务完成后,按钮的启用/禁用会非常快(它们会发生,但您不会注意到)

这种行为不是我想要的。我尝试在 JButton、JFrame 甚至包含按钮的 JPanel 上使用重绘,但我似乎无法让它做我想做的事。一些提示?

最佳答案

当您在按钮回调中工作时,您将暂停 GUI 绘制线程直到它完成。

您需要做的是生成一个线程来执行长时间运行的任务,然后让该线程在完成时使用 SwingUtilities.invokeLater() 更新 UI。不使用 invokeLater 不是线程安全的,通常是糟糕的 mojo。

一个基本的例子是:

button.setEnabled(false);
new Thread(new Runnable() {
public void run() {
// Do heavy lifting here
SwingUtilies.invokeLater(new Runnable() {
public void run() {
button.setEnabled(true);
}
});
}
}).start();

关于java - Swing 按钮不会立即使用react!我该如何改变它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/421381/

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