如何从线程更改Java标签?

问题描述 投票:0回答:1
class firstThread implements Runnable {

      public Thread t;

      @Override
      public void run() { 
        for (int x = 1; true; x++) { 
          System.out.print(x + " "); 
          NewJFrame.a = x;
          try {
            Thread.sleep(1000);
          } catch (InterruptedException ex) {
            Logger.getLogger(firstThread.class.getName()).log(Level.SEVERE, null, ex);
          }
        }
      }

      public void start() {
        t = new Thread(this, "first");
        t.start();
      }
}

我想更新jframe标签值(变量值)。

我怎样才能做到这一点?

java multithreading label
1个回答
1
投票

如果从“EventDispatchingThread”以外的线程更新Swing UI组件,请务必这样做:

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

https://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html

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