2017-05-14 15 views
1

私はJInternalFrameを持っています。そこでは、JTableをダブルクリックしたときにJOptionPaneを表示したかったのです。私は、インターネットで周りを見回して、それを行うための唯一の方法はのmousePressed()メソッドをオーバーライドすることが分かった、これは私がそれをやった方法です:オーバーライドされたmouseListenerを削除するにはどうすればよいですか?

tblJobs.addMouseListener (new MouseAdapter() { 
    @Override 
    public void mousePressed (MouseEvent e) { 
     JTable tbl = (JTable)e.getSource(); 
     int row = tbl.rowAtPoint(e.getPoint()); 

     if (e.getButton() == MouseEvent.BUTTON1 && row != -1) { 
      if (e.getClickCount() == 2) { 
       JOptionPane.showMessageDialog(null, "Double click detected"); 
      } 
     } 
    } 
}); 

事があり、私も枠を隠すためにボタンを持っていますフレームが隠れて再表示されたときに、JTableをダブルクリックするとJOptionPaneが2回表示されることがわかりました。 JOptionPaneが表示された回数は、フレームを隠して表示する回数とともに増加しているようです。私の推測では、私のフレームを隠して再表示すると、mouseListenerが何度も呼び出されています。この方法で追加されたmouseListenerを削除する方法はありますか?あるいは、JOptionPaneが複数回表示されないようにする別の方法がありますか?また、もし私のコードが何とか愚かだったら、私に教えてください! :) 前もって感謝します!

+0

'へmousePressed()の最初の行を設定するか?' == 'tblJobs.removeMouseListener(...)'のコード行の後に 'JOptionPane.showMessageDialog(複数回の表示からのJOptionPaneを停止する別の方法がありますnull、 "Dou ..." – mKorbel

+0

脇にダブルクリックは 'XxxTableCellEditor'のアクセラレータです – mKorbel

+0

私はremoveMouseListenerをそこに置こうとしましたが、フレームを隠して再表示しない限り、もう一度ダブルクリックできません。 xxxTableCellEditor? – Grandevox

答えて

1

非表示にしたときにブール代数変数hidden = trueを設定する方法は、hidden = falseです。
if(hidden) return;

関連する問題