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