Swing,在for中更新文本字段值



我试图在一个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);
    }
}

你不能让你的jTextField1变量'final',但你可以使用一个局部变量声明为final,并设置为你的jTextField1变量,如下所示…我在我的编码中使用了很多次这样的方法,它是有效的…

<>之前final jTextField local_var = jTextField1;

SwingUtilities。invokeLater(new Runnable() {

public void run() {

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

我想你正在尝试从外部线程更新组件。一般来说,Swing不是线程安全的,要了解更多细节,请参阅此。对于您的代码,请尝试遵循以下方法:

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

变量jTextField1必须声明为final

最新更新