我一直在编写以下代码,但无法双击JScrollPane。这是我的代码:
但是,使用此方法会引发错误:无法将JScrollPanes强制转换为JLists。此外,单击表而不是单元格本身时,会发生这种情况。我真的不确定如何在我单击单元格时如何对JScrollPane进行动作侦听。有人有什么想法吗?
答案 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() );