java - 如何在没有最终字符串的情况下通过不同线程更改 JLabel?

标签 java multithreading swing jlabel

我知道这似乎是一个反复提出和回答的问题,但即使在梳理堆栈溢出几个小时后我也无法解决问题。如果我遗漏了一些明显的东西,请提前抱歉。

我需要在每次线程启动时更改 jLable 的文本,并在该线程结束时再次更改。简而言之,我试图显示当前正在运行的线程数。

jobQueueView 是一个静态且最终的 jLabel。 Main 是具有 jLabel 的 jFrame。 jobQueue 是一个静态 int。

在每个线程的开始处:

jobQueue += 1; refreshQueue();

在每个线程的末尾:

jobQueue -= 1;refreshQueue();

最后

public void refreshQueue() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                new Main().jobQueueView.setText(Integer.toString(jobQueue));
            }
        });

    }

这行不通。有任何想法吗?谢谢

编辑:按照安德鲁·汤普森的指示 Swing JLabel text change on the running application :在按钮单击事件上

Can I change the text of a label from a Thread in Java? : 必须使字符串成为最终字符串。我不能。

Update JLabel from another thread :使用计时器,我需要线程数

JLabel on JPanel doesn't update when setText from another method : 尝试了给定的解决方案。没有成功

Thread and JLabel in Swing- Not working properly :更多的按钮点击,但不同的解决方案。还是没用

最佳答案

看来您每次都在创建一个新框架。

new Main().jobQueueView.setText(Integer.toString(jobQueueCount ));

所以你有多个框架但有一个静态标签。这可能会导致问题。通过如下静态方式访问 jobQueueView。

Main.jobQueueView.setText(Integer.toString(jobQueueCount ));

关于java - 如何在没有最终字符串的情况下通过不同线程更改 JLabel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38306209/

相关文章:

java - 插入带有动画的 JList

java - 如何从多部分表单数据请求中删除 http 工件?

c++ - Pthreads 类似信号的暂停?

java - 设置具有不同背景颜色的区分工具提示 (Java)

c# - .NET AppDomain.Unload 触发失控线程

JavaFX SwingWorker 等效?

java - 澄清 Java Swing 中组件类的继承层次结构?

java - 使用 List<UnaryOperator<...>> 映射对象

java - 如何从类类型转换为接口(interface)类型

java - 使用 SimpleJdbcInsert 和 Sybase 检索生成的 key 时出现问题