我在一列中有一个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());
}
});
在这件事情上,有人可以解雇我吗?
答案 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 == ???)
{
...
}
}
}