5

プログラムを使用しているユーザーがでアイテムを選択したときにのみ起動するリスナーを探していますJComboBox。使いたくない、ActionListenerまたはItemListenerプログラムでアイテムを選択したときにも起動するためです。また、アイテムを選択したときではなく、MouseListenerクリックしたときにのみ起動するため、どちらも使用できません。JComboBox

これを行う最も簡単な方法は何だろうと思っていましたか?現在、私の解決策は厄介です。コードを使用してjcomboboxの選択した項目を変更するとき、フラグをtrueに設定します。そして、私のアクションリスナーでは、フラグがfalseの場合にのみ実行されます。

4

1 に答える 1

2

A) プログラムで選択を実行するときは、リスナーを一時的に削除することをお勧めします。

B) プログラムによる変更が別の GUI イベントの影響でない場合は、次の醜い/堅牢ではない/エラーが発生しやすい/「ハッキー」な方法で解決できます:EventQueue.isEventDispatchThread()クリックが GUI スレッドによってトリガーされたかどうかを確認します (ユーザー)。

C)(おっと、あなたの質問を読み直したところ、以下に説明する方法をすでに発見していることがわかりました。基本的には、これ(または上記の方法)が最良の代替手段であると言えます。)

nonUserSelection別のオプションは、プログラムで値を選択する前にtrueに設定し、後でfalseにリセットするようなものと呼ばれるブールフラグを持つことです。アクションリスナーでは、単に追加します

if (nonUserSelection)
    return;
于 2010-12-09T21:44:52.363 に答える