私は 2 つの JLists を含む JPanel を持っています。
私ができるようにしたいのは、どちらかで1つのアイテムだけが選択されるようにすることです
誰でも私を助けることができます
a) 彼らを「結婚」させて、これが事実となるようにする
b)両方を主宰し、一方が選択されているときに一方のすべての要素を選択解除できるリスナーを作成するためのベストプラクティスのヒントを教えてください-できればこれは避けたいと思います。
ありがとう :)
リスナーは、書くのが難しくも醜くもありません。私は...するだろう
このリスナーは次のように実装できます。
public void valueChanged(ListSelectionEvent e){
if ( e.isAdjusting()) return;
ListSelectionModel sourceSelectionModel = (ListSelectionModel) e.getSource();
if ( !sourceSelectionModel.isSelectionEmpty() ){
//still need to implement the findOtherSelectionModel method
ListSelectionModel other = findOtherSelectionModel( sourceSelectionModel );
other.clearSelection();
}
}
選択をクリアするとリスナーが再びトリガーされることに注意してください。ただし、isSelectionEmpty
チェックによってループが発生することはありません。もう 1 つの方法は、他のリストboolean
を呼び出す直前にリスナーを無効にすることです (フラグなどを使用)。clearSelection
ユーザーにとっても最善の解決策は、各リストにカテゴリラベルが付いたラジオボタンを次に配置することだと思います。これにより、いずれかを選択するたびに他方を明確に無効にできます。
ユーザーが最初のリストの値をクリックし、次に次のリストをクリックすると、クリックしたすべての値が消えてしまい、論理的なフラストレーションがたまっていることが想像できます...
次に、フォームから値を取得するときは、有効なものだけを取得します