Java 如何在JTable的行和列上使用e.getValueIsAdjusting和侦听器?

Java 如何在JTable的行和列上使用e.getValueIsAdjusting和侦听器?,java,swing,jtable,listselectionlistener,Java,Swing,Jtable,Listselectionlistener,我有一个JTable,它代表游戏中的一个棋盘,我需要能够检测列和行中的变化 tb = new JTable(board); tb.getSelectionModel().addListSelectionListener(this); tb.getColumnModel().getSelectionModel().addListSelectionListener(this); 但这意味着当一行和一列被更改时,valueChanged方法会被调用两次,这意味着我的if语句 if (!e.getVa

我有一个JTable,它代表游戏中的一个棋盘,我需要能够检测列和行中的变化

tb = new JTable(board);
tb.getSelectionModel().addListSelectionListener(this);
tb.getColumnModel().getSelectionModel().addListSelectionListener(this);
但这意味着当一行和一列被更改时,valueChanged方法会被调用两次,这意味着我的if语句

if (!e.getValueIsAdjusting()) {
满足两次,这将导致在板上放置多个跳棋

我想最后只得到两个坐标的细胞,这是现在选定的。 我理解这可能有点措词不当,但这是我能给出的对问题的最好描述


任何帮助都将不胜感激

您可以覆盖JTable的
changeSelection(…)
方法。每次单元格选择更改时都会调用此方法:

final JTable table1 = new JTable(5,5)
{
    @Override
    public void changeSelection(
        int row, int column, boolean toggle, boolean extend)
    {
        super.changeSelection(row, column, toggle, extend);

        System.out.println(row + " : " + column);
    }
};
满足两次,这将导致在板上放置多个跳棋

在添加棋盘之前,首先检查棋盘上是否已存在棋盘格