Java 侦听已选择的JTable单元格上的选择

Java 侦听已选择的JTable单元格上的选择,java,swing,jtable,cell,listselectionlistener,Java,Swing,Jtable,Cell,Listselectionlistener,除了使用MouseListener以外,是否有其他方法可以侦听已选择的单元格(即使是带有JTable)的单元格) 我有一个带有行和列侦听器的JTable。选择已选单元格时,两个侦听器都不会激发: JTable table() { JTable table = new JTable(10, 10); table.getSelectionModel().addListSelectionListener(rowListener); table.getColumnModel()

除了使用
MouseListener
以外,是否有其他方法可以侦听已选择的单元格(即使是带有
JTable
)的单元格)


我有一个带有行和列侦听器的JTable。选择已选单元格时,两个侦听器都不会激发:

JTable table() {
    JTable table = new JTable(10, 10);
    table.getSelectionModel().addListSelectionListener(rowListener);
    table.getColumnModel().getSelectionModel().addListSelectionListener(colListener);
    return table;
}

ListSelectionListener rowListener = event -> {
    if(event.getValueIsAdjusting())
        return;

    System.out.println("Row: "+((ListSelectionModel) event.getSource()).getMinSelectionIndex());
};

ListSelectionListener colListener = event -> {
    if(event.getValueIsAdjusting())
        return;

    System.out.println("Col: "+((ListSelectionModel) event.getSource()).getMinSelectionIndex());
};
我的目标是打开/关闭电池。它是有效的,除了监听器在选择一个已经选择的单元格时不会触发之外,这是通过上面的SSCCE表示的

似乎没有任何侦听器可以连接到
JTable
(或其模型/选择模型)来处理此问题,除非我使用
MouseListener
并手动管理Cooridate。使用
TableModelListener
,我可以侦听更改,但此事件针对的是以前的单元格(已取消选择),单击未选择单元格的区域将触发该侦听器

我的目标是打开/关闭电池

在TableModel中存储布尔数据。然后,无论何时单击单元格,该值都将在真/假之间切换

布尔值的默认渲染器是一个复选框。如果不想看到该复选框,则始终可以使用自定义渲染器