Java 如何设置鼠标侦听器,使表只能单击一次?
我已编写了此侦听器的代码:Java 如何设置鼠标侦听器,使表只能单击一次?,java,swing,jtable,mouseevent,double-click,Java,Swing,Jtable,Mouseevent,Double Click,我已编写了此侦听器的代码: playlistTable.addMouseListener(new MouseAdapter() { private boolean ignoreDoubleClicks = false; public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2 && !ignoreDoubleClicks) {
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代码>
但是,为什么不设置为false?在第一次双击鼠标事件时,您设置了this.ignoreDoubleClicks=true
,我没有看到任何代码会将其重置回false
。因为所有代码似乎都被包装在检查if的if
语句中!此.ignoreDoubleClicks
,将其设置为true将永久锁定侦听器。条件的左侧(e.getClickCount()==2
)可能计算为真,也可能不计算为真,因为右侧为false
,运算符为逻辑and(&&)。
在第一次双击鼠标事件中,您设置了this.ignoreDoubleClicks=true,我没有看到任何代码会将其重置回false
。因为所有代码似乎都被包装在检查if的if
语句中!此.ignoreDoubleClicks
,将其设置为true将永久锁定侦听器。条件的左侧(e.getClickCount()==2
)可能计算为真,也可能不计算为真,因为右侧是false
,运算符是逻辑运算符,(&&&&)。您对这种行为有何建议?这取决于此侦听器的目标和想法。当您希望该标志再次开始响应时,请将其设置回false。您对这种行为有何建议?这取决于此侦听器的目标和想法。如果希望该标志再次开始响应,请将其设置回false。