2012-01-27 4 views
1

私はかなりJavaに慣れているので、ここでは何か根本的な欠点があります。イベントハンドラでテキストが設定されているようです

私はボタンでGUIを持っていると私はそれをクリックし、タスクに

 connectButton.addActionListener(new ActionListener() { 
       public void actionPerformed(ActionEvent arg0) { 
        databaseConnectWindow.setText("Connecting..."); 
        connectToDatabase(); 
       } 
     }); 

を行い、その後何かにウィンドウ内のテキストを変更しかしdatabaseConnectWindow内のテキスト上記のコードでは変更されません。 conectToDatabseが終了するまで。 アイデア

答えて

2

バックグラウンドスレッドにSwingWorkerを使用して、イベントディスパッチスレッドまたはEDTとも呼ばれるGUIスレッドをロックしないようにします。詳細については、問題を詳しく説明するチュートリアルリンクのLesson: Concurrency in Swing

+0

+1をご覧ください。 – camickr

+0

ディト..私が探していたもの。 – Scott

+0

これはとても悪いですか?... Runnable doWorkRunnable = new Runnable(){public void run(){connectToDatabase(); }}; SwingUtilities.invokeLater(doWorkRunnable); – Scott

1

あなたはUIスレッドでconnectToDatabase()を呼び出しています。
UIスレッドは空き状態になるまで更新できません。

バックグラウンドスレッドでデータベースに接続する必要があります。

関連する問題