Java jTable列侦听器

时间:2013-06-22 14:19:25

标签: java swing jtable

我在一列中有一个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());

    }
});

在这件事情上,有人可以解雇我吗?

2 个答案:

答案 0 :(得分:3)

为什么不直接覆盖tablemodel的setValueAt函数?它获取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
        } 
    }
}

答案 1 :(得分:1)

  

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

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

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

        if (column == ???)
        {
            ...
        }
    }
}