0

ボタンにアクションリスナーがあり、多くのバックグラウンドタスクを実行するために、スレッド、待機、通知、またはスリープを使用しなかったデスクトップアプリケーションを開発/開発しています。ボタンをクリックすると、JFrameがフリーズするだけです。

1) 誰かが私に何を使うべきか、より簡単に提案できますか?

2) setvalue(n) メソッドで jprogress bar を使用していますが、n を読み込みにかかった時間で自動的に置き換えたいのですが、どうすればよいですか?

4

2 に答える 2

1

Swing for GUIを使用している場合は、「SwingWorker」クラスを使用する必要があります。

http://docs.oracle.com/javase/tutorial/uiswing/concurrency/simple.html

于 2013-03-05T14:33:06.230 に答える
1

1)ボタンをクリックして新しいスレッドに移動するときに、実行中のコードを移動する必要があります。このようなものが機能します:

public class Worker implements Runnable {
    Thread t;
    public Worker() {
        t = new Thread(this);
    }
    @Override
    public void run() {
        //do stuff here
    }
    public void start() {
        t.start();
    }
}

次に、JFrameのボタンをクリックすると、次のようになります。

Worker w = new Worker();
w.start();

2)setProgress()任意intの時間(たとえば、開始時に現在の時刻を取得、終了時に現在の時刻を取得、所要時間=終了-開始)で呼び出すことができます。使用したことも確認してくださいsetMaximum()

于 2013-03-05T14:36:57.100 に答える