我如何通过另一个线程更新我的jLabel?

问题描述 投票:0回答:1

所以,我建立了一个在另一个线程上运行的套接字连接,现在我想在每次接受连接时更新连接数。现在我想在每次接受连接时更新连接数。但是一个公共变量的变化会被反映出来,但不会在标签的GUI中反映出来。下面是我的一段代码。

while(flag){
    try{
        s = ss2.accept();
        ob.inc();
        System.out.print(ob.counter.getText());
        String x = ob.counter.getText();
        System.out.println(x);
        System.out.println("connection Established");

    }

catch(Exception e){
    e.printStackTrace();
    System.out.println("Connection Error");

}

} }

GUI部分的代码是。

public void inc()
{
    ctr++;
       counter.setText(String.valueOf(ctr));
    counter.repaint();
}

谁能告诉我如何动态地改变jLabel的值?

java thread-safety jlabel
1个回答
0
投票

如果 inc() 是由一个工作线程(而不是主线程或UI线程)调用的,那么你会希望将该调用包裹在 SwingUtilities.invokeLater().

© www.soinside.com 2019 - 2024. All rights reserved.