有没有一种方法可以将双击动作侦听器添加到JScrollPane上?

时间:2019-11-20 16:09:49

标签: java mysql swing jscrollpane

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

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

1 个答案:

答案 0 :(得分:0)

鼠标事件将传递到您单击的组件。

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

默认情况下,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() );