0

次の問題があります。私はボタン付きの小さなフォームを持っています (ここでは Java について話しています)。サーバーとのソケット接続を介してフォーム内のデータを送信します。今、ボタンを押すと、この単一の接続が確立されますが、その間、ボタンは「押された」ままです。actionlistener によってアクティブ化されたアクションが完了すると (接続が確立され、データが送信され、接続が閉じられます)、ボタンが解放されます。

今私の質問は、それに対する簡単な修正はありますか?もしそうなら(またはそうでない場合)、どうすればこれを修正できますか?

前もって感謝します。

submit.addActionListener(this);

そして、これがその部分ですが、それがテキストで明確にされていることを願っています.

public void actionPerformed(ActionEvent ae) {
        if (ae.getSource() == submit) {
            boodschap = testtext.getText();
//            System.out.println(boodschap);
            try {
                try {
                    UserConnection connect = new UserConnection(boodschap);
                } catch (SQLException ex) {
                    Logger.getLogger(UserAction.class.getName()).log(Level.SEVERE, null, ex);
                }
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(UserAction.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
}

(ああ、このコードは魔法のように機能します。コードに問題はありません。私が何を意味するかを示すために表示されているだけです。)

4

1 に答える 1

3

問題は、UIスレッドで長時間実行されている操作を実行していることです。コードをSwingWorkerまたはRunnableに入れて、新しいスレッドで実行すると、問題が解決するはずです。

于 2012-05-10T15:06:20.090 に答える