我正在使用JTable。我需要在单元格选择更改时获得通知。我尝试使用ListSelectionListener,但只有在行选择更改时才会收到通知。如果我在同一行上选择一个新的列,则不会收到通知。我需要知道何时选择了单元格,而不是单元格何时更改。是否有可以用来实现此功能的监听器?
我正在使用JTable。我需要在单元格选择更改时获得通知。我尝试使用ListSelectionListener,但只有在行选择更改时才会收到通知。如果我在同一行上选择一个新的列,则不会收到通知。我需要知道何时选择了单元格,而不是单元格何时更改。是否有可以用来实现此功能的监听器?
最简单的方法是调用 setCellSelectionEnabled(true)
,并将表格的引用传递给监听器。当监听器被调用时,在原始表格上调用 getSelectedRow()
和 getSelectedColumn()
。
另一种方法是在表格上设置行选择监听器,在ColumnModel
上设置列选择监听器,然后找出它们的交集。
一种接收列选择更改通知的方法 - 如@parsifal在评论中已经回答的那样 - 是获取TableColumnModel的内部selectionModel并注册监听器:
table.getColumnModel().getSelectionModel().addListSelectionListener(selectionListener);
另一种方法是使用columnModel注册TableColumnModelListener:
table.getColumnModel().addColumnModelListener(columnModelListener);
JTable.getColumnModel().getSelectionModel()
@tadpole -JTable.getColumnModel().getSelectionModel()
- parsifalColumnModel
的SelectionModel
和JTable
的SelectionModel
添加相同的监听器,以便它能够识别行和列的变化。 - clum