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() {

public void run() {

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

于 2013-05-06T18:49:55.707 に答える
0

外部スレッドからコンポーネントを更新しようとしていると思います。一般に、Swing はスレッド セーフではありません。詳細については、こちらをご覧ください。コードに関しては、次のアプローチに従ってみてください。

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 に答える