我有一些旧的Java应用程序,它使用JTable来显示一些数据并允许输入。 JTable有2列。在JTable旁边,有一个按钮可以在JTable中添加新行。
我的问题是导航JTable时Tab和Enter键盘键和鼠标点击的行为。
我会尝试解释: 假设JTable中有5行:
还有其他问题。
任何想法可能有什么问题?
答案 0 :(得分:1)
这听起来有点奇怪。您是否完全使表无效并通知侦听器等行数已更改?
在您的表模型中,遍历TableModelListeners的所有并触发TableModelEvent'insert'事件:
TableModelEvent event = new TableModelEvent(
modelInstance,
positionOfNewRow,
positionOfNewRow,
TableModelEvent.ALL_COLUMNS,
TableModelEvent.INSERT);
for (TableModelListener l: listeners) {
l.tableChanged(event);
}
如果您无法解决问题,可以为表编写自己的行为。
这些是一些有用的方法:
editCellAt(int row, int column);
rowAtPoint(Point point);
columnAtPoint(Point point);
您可以将自己的侦听器添加到表中,以您喜欢的任何方式拦截事件和编辑单元格。
答案 1 :(得分:0)
关闭表格单元格编辑。并了解它的行为方式。通常,这可以通过将TableModel.isCellEditable()方法更改为简单地返回false来处理。
重新打开。您的JTable实例是否为子类?是否重写editCell()?如果是这样,那么将根据事件发生或未发生的事件触发编辑。该方法正在不恰当地进行编辑。如果被覆盖,那么该方法的实现就会很糟糕。
如果您的表没有子类,则查找对editCell()的调用。这些可能是不恰当地调用它,因此您可以查找这些调用并开始设置断点或日志语句。