0

我正在尝试在 for 中更新我的 Java Swing 表单。我尝试了很多方法,但没有奏效。这是我最后一次尝试的:

for(int i=0; i<10; i++) {
    jTextField1.setText("" + i);

    try {
        Thread.sleep(500);
    }
    catch (InterruptedException ex) {
        Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
    }
}
4

2 回答 2

1

您不能将 jTextField1 变量设为“final”,但您可以使用声明为 final 的局部变量并将其设置为 jTextField1 变量,如下所示...我在编码中多次使用这种方法,它可以工作...

最终 jTextField local_var = jTextField1;

SwingUtilities.invokeLater(new Runnable() {

公共无效运行(){

for (int i=0; i<10; i++) { local_var.setText("" + i); }});

于 2013-05-06T18:49:55.707 回答
0

我想您正在尝试从外部线程更新组件。一般来说,Swing 不是线程安全的,有关更多详细信息,请查看this。关于您的代码,请尝试遵循以下方法:

for(int i=0; i<10; i++) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            jTextField1.setText("" + i);
        }
    });
}

变量jTextField1必须声明为final.

于 2013-05-06T17:48:41.470 回答