Java 类似Excel的JTable单元格编辑器,在编辑开始时有一个空单元格

Java 类似Excel的JTable单元格编辑器,在编辑开始时有一个空单元格,java,jtable,Java,Jtable,我试图让JTable版本像excel一样工作:如果我开始编辑一个单元格,该单元格在接收新条目时变为空。目标是避免用户必须先删除现有的单元格内容 我已经可以通过添加PropertyChangeListener来检测单元格的开始/停止版本,如下所示: public void propertyChange(PropertyChangeEvent e) { // A cell has started/stopped editing if ("tableCellEditor".equal

我试图让JTable版本像excel一样工作:如果我开始编辑一个单元格,该单元格在接收新条目时变为空。目标是避免用户必须先删除现有的单元格内容

我已经可以通过添加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();
}
但是,编辑器内容保留前一个值

是否有人在编辑过程中有隐藏单元格当前值的线索

选项分析如果用户没有实际修改值,它应该能够恢复以前的单元格内容。

我从未见过电子表格在您开始编辑单元格时删除数据


显示了一种不同的方法。

我是这样做的。首先我使用事件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会替换以前的内容。谢谢!