ListSelectionListener 双击
ListSelectionListener double click
对于学校项目,我必须在 JList 上使用 ListSelectionListener(LSL)。我知道 LSL 会响应鼠标单击和鼠标释放。但是对于这个项目,我必须让它响应双击。有没有办法让 LSL 对此做出回应?
我不知道 ListActionHandler
是什么,因为你没有提供它的代码。
我的猜测是它实现了 MouseListener
,或者可能扩展了 MouseAdapter
。如果是这样,将有一个名为 public void mouseClicked(MouseEvent e)
的方法,您必须实施该方法。在那里,只需进行 if-check 以仅响应双击:
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
// do your stuff here
}
}
编辑:
现在您已将 post 更正为 ListSelectionListener
,您会注意到只有一种方法可以实现,void valueChanged(ListSelectionEvent e)
不会直接转换为鼠标点击次数。
为什么?因为鼠标不是更改 JList 上的选择的唯一方法。可以通过箭头键或以编程方式完成。
这可以(某种程度上)通过向 JList 添加 MouseListener
然后实现我展示的点击计数代码来解决。但是,大多数人会认为这是一种 hack,因为出于已经提到的原因,不建议使用 MouseListeners 来跟踪 JList 选择中的更改。
对于学校项目,我必须在 JList 上使用 ListSelectionListener(LSL)。我知道 LSL 会响应鼠标单击和鼠标释放。但是对于这个项目,我必须让它响应双击。有没有办法让 LSL 对此做出回应?
我不知道 ListActionHandler
是什么,因为你没有提供它的代码。
我的猜测是它实现了 MouseListener
,或者可能扩展了 MouseAdapter
。如果是这样,将有一个名为 public void mouseClicked(MouseEvent e)
的方法,您必须实施该方法。在那里,只需进行 if-check 以仅响应双击:
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
// do your stuff here
}
}
编辑:
现在您已将 post 更正为 ListSelectionListener
,您会注意到只有一种方法可以实现,void valueChanged(ListSelectionEvent e)
不会直接转换为鼠标点击次数。
为什么?因为鼠标不是更改 JList 上的选择的唯一方法。可以通过箭头键或以编程方式完成。
这可以(某种程度上)通过向 JList 添加 MouseListener
然后实现我展示的点击计数代码来解决。但是,大多数人会认为这是一种 hack,因为出于已经提到的原因,不建议使用 MouseListeners 来跟踪 JList 选择中的更改。