1

ログイン画面のGUIを持っています。ログインボタンを押すたびに、オンラインmysqlデータベースのエントリに対してユーザー名とパスワードがチェックされ、ログインボタンのactionPerformed()メソッドでデータベースからこのすべての情報を抽出しています.問題は、プログラムがデータベースからデータをフェッチしている間です. GUI がフリーズします。Google で問題を検索したところ、SwingWorker を使用する必要があることがわかりましたが、初心者なので、目的に合わせて SwingWorker を使用する方法がわかりませんでした。

4

2 に答える 2

3

まず、クラス (GUI クラスの場合もあります) で、次のSwingWorkerような型のメンバー変数を宣言します。

private SwingWorker<Boolean, Void> backgroundProcess;

次に、初期化コード (コンストラクター、onShow メソッド イベント ハンドラーなど) で変数を次のように初期化します。

    backgroundProcess = new SwingWorker<Boolean, Void>() {

        @Override
        protected Boolean doInBackground() throws Exception {
            // paste the MySQL code stuff here
        }

        @Override
        protected void done() {
            // Process ended, mark some ended flag here
            // or show result dialog, messageBox, etc      
        }
    };

次に、メソッドで、の execute メソッドactionPerfomedを呼び出します。SwingWorker

    backgroundProcess.execute();

正しく行われた場合、GUI はボタン プレス イベントの後にフリーズしません。

于 2012-06-29T04:20:59.377 に答える
0

この簡単な では、中間結果extends SwingWorker<Icon, Void>を取得しIconます。Void同様に、あなたのものSwingWorker<DataSource, Void>DataSource.

于 2012-06-29T04:18:30.077 に答える