我正在尝试使用类似于excel的JTable版本:如果我开始编辑单元格,则单元格将变为空以接收新条目。目标是避免用户首先删除现有的单元格内容。
我已经可以通过添加PropertyChangeListener来检测单元格开始/停止版本,如下所示:
public void propertyChange(PropertyChangeEvent e)
{
// A cell has started/stopped editing
if ("tableCellEditor".equals(e.getPropertyName()))
{
if (table.isEditing())
processEditingStarted();
else
processEditingStopped();
}
}
尝试在processEditingStarted()中清除表模型不适用于以下代码:
private void processEditingStarted()
{
SwingUtilities.invokeLater( this );
}
public void run()
{
row = table.convertRowIndexToModel( table.getEditingRow() );
column = table.convertColumnIndexToModel( table.getEditingColumn() );
oldValue = table.getModel().getValueAt(row, column);
newValue = null;
table.getModel().setValueAt(null, row, column);
table.updateUI();
}
然而,编辑器内容保留了以前的值。
有人在编辑期间有线索隐藏单元格的当前值吗?
Optionnaly如果用户实际上没有修改该值,它应该能够恢复以前的单元格内容。
答案 0 :(得分:4)
开始编辑单元格时,我从未见过电子表格删除数据。
Table Select All Editor显示了不同的方法。
答案 1 :(得分:0)
private void purchases_TBLKeyReleased(java.awt.event.KeyEvent evt) {
int rowWorking = purchases_TBL.getSelectedRow();
int columnWorking = purchases_TBL.getSelectedColumn();
if(columnWorking==3){
model.setValueAt(null, rowWorking, columnWorking);
}
}
一旦我使用键盘进行焦点移动,这会使表的第三列为null。
注意:同一段代码可以放在 MouseClicked 事件中。