私は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が複数回表示されないようにする別の方法がありますか?また、もし私のコードが何とか愚かだったら、私に教えてください! :) 前もって感謝します!
'へ
mousePressed()
の最初の行を設定するか?' == 'tblJobs.removeMouseListener(...)'のコード行の後に 'JOptionPane.showMessageDialog(複数回の表示からのJOptionPaneを停止する別の方法がありますnull、 "Dou ..." – mKorbel脇にダブルクリックは 'XxxTableCellEditor'のアクセラレータです – mKorbel
私はremoveMouseListenerをそこに置こうとしましたが、フレームを隠して再表示しない限り、もう一度ダブルクリックできません。 xxxTableCellEditor? – Grandevox