5

JButton ActionListener に問題があります。別のクラスで定義された doTheCleaning() メソッドがあり、呼び出されたときに GUI に一連の変更を加えます。

public void doTheCleaning(){
    //change image icon
    //had thread.sleep here
    //insert to text area
    //had thread.sleep here
    //etc
}

次に、別のクラスで、doTheCleaning() メソッドを含むクラスをインスタンス化し、jbutton の actionperformed() メソッドを使用して ActionListener を次のように記述しました。

public void actionPerformed(ActionEvent e){
   //some code
   //newClass.doTheCleaning();
}

addActionListener() などの残りの方法を知っているので、それについて質問する必要はありません。私の懸念は、doTheCleaning() メソッドが呼び出されたときに実行される GUI のすべての変更が、ボタンをクリックした後にのみ適用されることです。これが発生すると、ラベルとテキストエリアで発生した変更の間の連続が表示されませんでした。テスター クラスで直接呼び出した場合、コードは正常に動作しますが、actionperformed メソッド内で呼び出すと、GUI の最終状態のみが表示されます。どの要素が最初に変更され、次に何が変更されるかなどを示す必要があります。

JButton をクリックしたときだけこれらの変更を行う必要がある場合、どうすればそれを実現できますか?

** Java での GUI の操作はまだあまり得意ではありません。コードを提供しなくても、皆さんが私の要点を理解してくれることを願っています。しかし、必要に応じてできます。ありがとう。

4

1 に答える 1

12

EDT内で集中的な操作を実行しないでください。実行すると、GUIが応答しなくなり、GUIの更新が表示されない場合があります。使用できる最良の選択は次のSwingWorkerとおりです。

詳細については、Swingの同時実行性をお読みください。

于 2012-07-18T16:37:28.877 に答える