我正在尝试在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);
}
}
答案 0 :(得分:1)
你不能使你的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); }});
答案 1 :(得分:0)
我想您正在尝试从外部线程更新组件。一般来说,Swing不是线程安全的,有关更多详细信息,请查看this。关于您的代码,请尝试遵循以下方法:
for(int i=0; i<10; i++) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
jTextField1.setText("" + i);
}
});
}
变量jTextField1
必须声明为final
。