« Mac の JPopupMenu の不具合の回避 | トップページ | サーバを全て ubuntu 8.04LTS に移行 »

2010年5月14日 (金)

mac の SelectionListener の挙動不審

スタンプを編集しているとき,テーブルを選択したときに削除ボタンが有効にならないことが時々あった。たまにしか起きないので,原因を探るのが難しかったが,やっと分かった。
SelectionListener で valueChanged が呼ばれるとき,getValueIsAdjusting() が true で呼ばれた後,普通は false でもう一回呼ばれるのだが,なぜかたまに true で呼ばれたまま false が呼ばれないことがあることが分かった。とりあえず,削除ボタンを制御している SelectionListener の getValueAdjusting() 判定をコメントアウトして対応した。クリックをドラッグと認識したまま次のマウスクリックまで放置になっている可能性がある。

 

order/MedicineTablePanel.java

m.addListSelectionListener(new ListSelectionListener() {
  public void valueChanged(ListSelectionEvent e) {
    // 普通に select しても true を1回呼んだ後,知らんプリすることがあるのの workaround
    // true と false で notifySelectedRow() が2回呼ばれてしまうが,この場合問題ない
    // if (e.getValueIsAdjusting() == false) {
      notifySelectedRow();
    //}
  }
});

« Mac の JPopupMenu の不具合の回避 | トップページ | サーバを全て ubuntu 8.04LTS に移行 »

OpenDolphin」カテゴリの記事