• 締切済み

ListSelectionEventについて

JavaのSwingでプログラムをしています。 JListで作ったリストボックスの項目を選んでアクションさせる場合 public void valueChanged(ListSelectionEvent e) {} 内に記述すると思うのですが、 これだとなぜか2回実行されてしまいます。 厳密に言うとマウスのボタンを押したときと 押した後離した時に実行されます。 これを押したときのみ実行されるように したいのですが、何か良い方法はないでしょうか?

みんなの回答

  • PecoPlus
  • ベストアンサー率76% (144/188)
回答No.1

 マウスボタンを押したときのみではなく、離したときのみになりますが、これではダメですか? public void valueChanged(ListSelectionEvent e) {   if (!e.getValueIsAdjusting()) {     ここに処理を書く   } }  なぜ二回イベントが起こるのかは、たぶん、クリックが超短いドラッグとして処理されてるからだと想像しています。  その証拠にボタンを押したときのイベントは getValueIsAdjusting()がtrueですが、離したときははfalseになります。  getValueIsAdjusting()がfalseの時だけ処理を行うようにしておかないと、マウスをドラッグしたときに、getValueIsAdjusting()がtrueのイベントがもっとたくさん起きてしまうので、処理を一回だけにしたいなら、こうした方がいいと思います。

関連するQ&A