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 选择中的更改。