2

私は 2 つの JLists を含む JPanel を持っています。

私ができるようにしたいのは、どちらかで1つのアイテムだけが選択されるようにすることです

誰でも私を助けることができます

a) 彼らを「結婚」させて、これが事実となるようにする

b)両方を主宰し、一方が選択されているときに一方のすべての要素を選択解除できるリスナーを作成するためのベストプラクティスのヒントを教えてください-できればこれは避けたいと思います。

ありがとう :)

4

2 に答える 2

3

リスナーは、書くのが難しくも醜くもありません。私は...するだろう

  • リストが単一選択のみをサポートしていることを確認してください
  • 両方のリストの選択モデルに同じ選択リスナーを追加します

このリスナーは次のように実装できます。

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

于 2012-05-08T14:09:27.420 に答える
3

ユーザーにとっても最善の解決策は、各リストにカテゴリラベルが付いたラジオボタンを次に配置することだと思います。これにより、いずれかを選択するたびに他方を明確に無効にできます。

ユーザーが最初のリストの値をクリックし、次に次のリストをクリックすると、クリックしたすべての値が消えてしまい、論理的なフラストレーションがたまっていることが想像できます...

次に、フォームから値を取得するときは、有効なものだけを取得します

于 2012-05-08T14:02:44.650 に答える