Java 类似Excel的JTable单元格编辑器,在编辑开始时有一个空单元格
我试图让JTable版本像excel一样工作:如果我开始编辑一个单元格,该单元格在接收新条目时变为空。目标是避免用户必须先删除现有的单元格内容 我已经可以通过添加PropertyChangeListener来检测单元格的开始/停止版本,如下所示:Java 类似Excel的JTable单元格编辑器,在编辑开始时有一个空单元格,java,jtable,Java,Jtable,我试图让JTable版本像excel一样工作:如果我开始编辑一个单元格,该单元格在接收新条目时变为空。目标是避免用户必须先删除现有的单元格内容 我已经可以通过添加PropertyChangeListener来检测单元格的开始/停止版本,如下所示: public void propertyChange(PropertyChangeEvent e) { // A cell has started/stopped editing if ("tableCellEditor".equal
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();
}
但是,编辑器内容保留前一个值
是否有人在编辑过程中有隐藏单元格当前值的线索
选项分析如果用户没有实际修改值,它应该能够恢复以前的单元格内容。我从未见过电子表格在您开始编辑单元格时删除数据
显示了一种不同的方法。我是这样做的。首先我使用事件keyreased,然后获取我正在处理的行和列编号,然后在该行设置值。代码如下所示
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);
}
}
这会使表的第三列在我使用键盘时立即变为空
注意:同一段代码可以放在MouseClicked事件中。永远不要调用updateUI()对于类似的内容。请阅读API以了解此方法的正确用法。开始编辑时,Excel和OpenOffice都会隐藏现有数据。您的建议很好:它不会像预期的那样隐藏内容,但至少,由于选择了内容,direct edition会替换以前的内容。谢谢!