我编写了这个监听器:
playlistTable.addMouseListener(new MouseAdapter() {
private boolean ignoreDoubleClicks = false;
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2 && !ignoreDoubleClicks) {
this.ignoreDoubleClicks = true;
System.out.println(ignoreDoubleClicks);
JTable target = (JTable)e.getSource();
int row = target.getSelectedRow();
videoTableModel = new VideoTableModel(playlistService.getMoviesOfPlaylist(row));
target.setModel(videoTableModel);
//TODO enables the table
//movieTable.setEnabled(false);
createPlaylist.setEnabled(false);
setButtonIcon("icons\\playlist_grau.png", createPlaylist, "createPlaylist");
removePlaylist.setEnabled(false);
setButtonIcon("icons\\bin_grau.png", removePlaylist, "removePlaylist");
algoButton.setEnabled(false);
setButtonIcon("icons\\glyphicons_137_cogwheels_grau.png", algoButton, "algoButton");
// playlistTable.setEnabled(false);
revalidate();
}
}
});
但是,当我第一次双击播放列表时,我会看电影。当我使用另一个按钮返回并在播放列表上双击“再次”时,它不再可以点击。为什么呢?
更新
问题是this.ignoreDoubleClicks = true;
但是,为什么它没有设置为假?
答案 0 :(得分:4)
在第一次双击鼠标事件时,您设置了this.ignoreDoubleClicks = true
,但我没有看到任何将其重置为false
的代码。由于所有代码都包含在检查if
的{{1}}语句中,因此将其设置为true会永久锁定侦听器。条件的左侧(!this.ignoreDoubleClicks
)可能会或可能不会评估为真,无论如何都是无关紧要的,因为右侧是e.getClickCount() == 2
且运算符是逻辑和 { {1}}