-1

我有一个jtable(Gui 布局管理器),boolean在一列中有值。您将看到此列中将出现一个复选框。这对我来说没问题,但现在我想要一个列单元格事件侦听器,这样当我按下此复选框时,我会得到整个行数据的输出。

现在我在 . 上取得了一些成功jtable.getModel().addTableModelListener,但这对整个桌子都有影响。

jTabelRooster.getModel().addTableModelListener(
new TableModelListener() {
    public void tableChanged(TableModelEvent evt) {

        String lidnummer = jTabelRooster.getValueAt(evt.getLastRow(), 0).toString();
        int parseLidnummer = Integer.parseInt(lidnummer);
        String lidVoornaam = jTabelRooster.getValueAt(evt.getLastRow(), 1).toString();
        String lidAchternaam = jTabelRooster.getValueAt(evt.getLastRow(), 3).toString();
        Boolean aanwezig = Boolean.parseBoolean(jTabelRooster.getValueAt(evt.getLastRow(), 4).toString());

    }
});

有人可以在这件事上折磨我吗?

4

2 回答 2

3

你为什么不直接覆盖setValueAt你的 tablemodel 的功能呢?它获取tablemodel中的两个坐标,以及用户输入的值

class YourTableModel extends YourBaseTableModel
{
    public void setValueAt(Object aValue, int rowIndex, int columnIndex)
    {
        //To keep the default behavior, if you didn't write this method yourself
        super.setValueAt(aValue, rowIndex, columnIndex);
        if(columnIndex == theBooleanColumnIndex)
        {
            //now with rowIndex you can access the underlaying row
        } 
    }
}
于 2013-06-22T14:59:23.143 回答
1

现在我在 jtable.getModel().addTableModelListener 上取得了一些成功,但这会对整个表产生影响。

侦听由包含布尔值的列中的更改生成的事件:

public void tableChanged(TableModelEvent e)
{
    if (e.getType() == TableModelEvent.UPDATE)
    {
        int column = e.getColumn();

        if (column == ???)
        {
            ...
        }
    }
}
于 2013-06-22T14:52:58.340 回答