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