我有一个JTable代表游戏中的棋盘,我需要能够检测到列和行中的变化。
tb = new JTable(board);
tb.getSelectionModel().addListSelectionListener(this);
tb.getColumnModel().getSelectionModel().addListSelectionListener(this);
但这意味着当一行和一列被更改时,valueChanged方法被调用两次,这意味着我的if语句
if (!e.getValueIsAdjusting()) {
满意两次,这导致多个棋子被放在棋盘上。
我想最终得到现在选中的单元格的两个坐标。 我知道这可能会略显措辞不足,但它是我能给出的问题的最佳描述。
非常感谢任何帮助!
答案 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);
}
};
满意两次,这导致多个棋子被放在棋盘上。
在添加检查器之前,首先检查该检查器是否已经在该板上。