gpt4 book ai didi

java - javax.swing.SwingWorker 中的问题

转载 作者:行者123 更新时间:2023-12-01 07:42:52 25 4
gpt4 key购买 nike

我已经制作了一个 swings 应用程序,但有一个问题如下:

我已经从事件调度线程启动了一个名为“Thread-Main”的 SwingWorker 线程,并将 GUI 的 JLabel 引用传递给了“Thread-Main”。

现在我已经从“Thread-Main”启动了 10 个线程。

现在我希望所有 10 个线程都应该更新 JLabel。

我怎样才能做到这一点?

有人告诉我,我可以通过首先将 SwingWorker 的所有 10 个线程子类化,然后调用publish("") 方法并在该“publish”方法中传递字符串,然后通过“Thread-Main”中的以下方法

@Override
protected void process(List<String> labelStrings) {
String count = labelStrings.get(labelStrings.size() - 1);
label.setText(count); // label is a reference to a label in the GUI
}
  1. 上述方法正确吗?
  2. 这 10 个线程应该是 SwingWorker 的子类吗?
  3. 还有其他方法可以做到这一点吗?

最佳答案

也许更简单的方法是将更新 GUI 的代码包装在 SwingUtilities.invokeLater(...) 方法中。

编辑:每当您想要更新标签时,请在您的个人线程中执行以下操作:

SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
label.setText(...);
}
});

关于java - javax.swing.SwingWorker 中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1624999/

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