【问题标题】:Is there a way to add a double click action listener onto a JScrollPane?有没有办法将双击动作监听器添加到 JScrollPane 上?
【发布时间】:2019-11-20 16:09:49
【问题描述】:

我一直在编写以下代码,但无法双击 JScrollPane。这是我的代码:

但是,使用它会引发错误:无法将 JScrollPanes 强制转换为 JLists。此外,当单击表格而不是单元格本身时会发生这种情况。我真的不确定如何在我单击单元格时对 JScrollPane 做出反应的动作侦听器。有人有什么想法吗?

【问题讨论】:

标签: java mysql swing jscrollpane


【解决方案1】:

鼠标事件被传递给您单击的组件。

如果该组件没有鼠标侦听器,则将事件向上传递到父组件,直到找到具有鼠标侦听器的组件。

默认情况下,Swing 将 MouseListener 添加到 JList(例如处理单击列表中的项目),因此该事件永远不会传递到滚动窗格。

此外,这发生在单击表格而不是单元格本身时。

不知道这是什么意思。什么是“表格”,什么是“单元格”?听起来您正在向滚动窗格添加 JTable,而不是 JList。

无论如何,如果你想在一个JList(已经添加到scrollPane的视口)上监听鼠标事件,那么你需要将MouseListener添加到JList。所以基本代码是这样的:

JList list = new JList(...);
list.addMouseListener(...);
JScrollPane scrollPane = new JScrollPane( list );
frame.add( scrollPane );

现在在您的MouseListener 中,MouseEvent 的来源将是JList

另外请注意,在您的侦听器中,您可以直接从 JList 中获取所选项目的值:

JList list = (JList)mouseEvent.getSource();
System.out.println( list.getSelectedValue() );

【讨论】:

  • 哦,等等。是的,我正在填充一个 JTable。有没有办法可以使用此代码单击 JScrollTable 内的单元格?
  • @Orion,不要忘记通过单击复选标记“接受”答案,以便人们知道问题已经解决。
猜你喜欢
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-06
  • 2021-02-14
  • 2011-01-17
相关资源
最近更新 更多