class MyListListener implements ListSelectionListener {
public void valueChanged (ListSelectionEvent e) {
JList source = (JList) e.getSource();
// do something
}
}
JList myList = new JList (myModel);
myList.addListSelectionListener (new MyListListener());
私はとても簡単なことをしています。 JListを持っています。リストの項目が選択されると、ハンドラーが呼び出されます。問題は、あるアイテムから別のアイテムに移動するときにハンドラーが2回呼び出されることです。最初のトリガーが元の選択されたアイテムを通過し、2番目のトリガーが新しいアイテムを通過する場合の使用法を確認できます。ただし、どちらの場合も、同じ新しいアイテムが渡されます。そのポイントは何ですか?ハンドラーが2回呼び出されないようにする方法はありますか?
e.getValueIsAdjusting
はあなたが探しているものです。そのメソッドのjavadocに記載されているように
これが一連の複数のイベントの1つであり、変更がまだ行われているかどうかを返します
これは通常の方法です。 getValueIsAdjusting() メソッドでフィルタリングする必要があります。