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

时间:2015-03-10 15:41:06

标签: java swing jtable listselectionlistener

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

tb = new JTable(board);
tb.getSelectionModel().addListSelectionListener(this);
tb.getColumnModel().getSelectionModel().addListSelectionListener(this);

但这意味着当一行和一列被更改时,valueChanged方法被调用两次,这意味着我的if语句

if (!e.getValueIsAdjusting()) {

满意两次,这导致多个棋子被放在棋盘上。

我想最终得到现在选中的单元格的两个坐标。 我知道这可能会略显措辞不足,但它是我能给出的问题的最佳描述。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

您可以覆盖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);
    }
};
  

满意两次,这导致多个棋子被放在棋盘上。

在添加检查器之前,首先检查该检查器是否已经在该板上。