3

2 つの JList (カテゴリと項目) をコーディングしたいと考えています。1 つのカテゴリをクリックすると、そのカテゴリのすべてのアイテムが選択され、1 つのアイテムをクリックするとそのカテゴリが選択されます。したがって、両方のJListには、互いにリッスンして選択を変更するListSelectionListenerがあります。

ある種の「ループ」を恐れるべきですか?イベントが消費されたことを伝える方法はありますか? 人々はそのような状況をどのように管理しますか?

ありがとう

4

4 に答える 4

1

あなたが想像したように、を選択するたびに、あなたはあなたのリスナーに発砲されるようlistAにトリガーします。その仕事は選択するためにすべての適切なアイテムを見つけることです。選択を強制してからオンにすると、リスナーによって処理されるイベントがトリガーされます。これにより、が強制的に選択されます。2つのリスナーを使用するだけでは、問題は解決しません。 ListSelectionEventlistAlistBlistBlistBlistA

2つのオプションがあります。

1-単一のリスナーを使用します。このリスナーは、のgetSourceメソッドを使用してイベントのソースをテストする必要がありListSelectionEventます。ソースがの場合はlistB、のリスナーリストからリスナーを削除し、listA選択を強制しlistAてから読み取ります。

list1.removeListSelectionListener(this);
list1.setSelectedIndex(e.getFirstIndex()); //this would have to be played with to allow for intervals
list1.addListSelectionListener(this);`

2- 2つのリスナーを使用しますが、ループを回避するには、アイテムを選択する前に、アイテムがすでに選択されているかどうかをテストする必要があります。すでに選択されている場合は、再度選択しないでください。

于 2010-04-24T16:22:46.857 に答える
0

Beans Binding APIを見てください。これは NetBeansのチュートリアルです。

于 2010-04-24T15:44:44.057 に答える
0

2 つのリスナーは、そのための良い方法です。心配はいりません。ループではなく、一度だけリスナーを作成するようにしてください。

于 2010-04-24T15:48:44.210 に答える