0

実行時にプログラムの進行状況バーに追加しようとしています.実際には、次のようなものを追加したい:

public class TestProgressBar extends javax.swing.JFrame {
   public  TestProgressBar Bar;
    public TestProgressBar() {
        initComponents();
        Bar=this;
    }
public void start(){
      //progress bar action
            SwingUtilities.invokeLater(new Runnable() {
              public void run() { 
                for(int i=0;i<100;i++){                
                          jProgressBar1.setValue(jProgressBar1.getValue()+10);  
                    try {
                    Thread.currentThread().sleep(100);
                      } catch (InterruptedException ex) {
                          Logger.getLogger(TestProgressBar.class.getName()).log(Level.SEVERE, null, ex);
                      }
            }
              }
              });
        //program running
   while(true);
}
    public static void main(String args[]) {
     TestProgressBar t=new TestProgressBar();
     t.setSize(320, 320);
     t.pack();
     t.setVisible(true);
     t.start();
    }
    // Variables declaration - do not modify                     
    private javax.swing.JButton jButton1;
    private javax.swing.JProgressBar jProgressBar1;
    // End of variables declaration                   
}

しかし、それは機能しません
やりたいことを実装するコードを見つけました コードです
、それは面倒
です それで、質問は、プログラムが機能しているよりも変化するプログレスバーを実装する方法ですか? プログレスバーの値は変化しますが、フォームにはこれらの変化が表示されません

4

1 に答える 1

1

Thread.sleep(...)アプリケーションをスリープ状態にしている Swing イベントスレッドで呼び出しています。イベント スレッドでも呼び出されるwhile (true)可能性がありますが、これについては 100% 確信が持てません。

解決策: Swing イベント スレッド (またはイベント ディスパッチ スレッドまたは EDT) を踏まずに、バックグラウンド スレッドを使用してください。このためのバックグラウンド スレッドを作成するために SwingWorker を使用する方法については、Swing での同時実行をお読みください。

于 2012-12-05T22:08:10.160 に答える