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