簡體   English   中英

類似於Excel的JTable單元格編輯器,在版本開始時帶有一個空單元格

[英]Excel-like JTable Cell Editor, with an empty cell at edition start

我正在嘗試使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();
}

但是,編輯器內容保留以前的值。

有人有線索在編輯期間隱藏單元格的當前值嗎?

如果用戶沒有實際修改該值,則它應該能夠還原以前的單元格內容。

當您開始編輯單元格時,我從未見過電子表格會刪除數據。

表全選編輯器顯示了另一種方法。

我是這樣做的。 首先,我使用事件keyReleased ,然后獲取我正在處理的行號和列號,然后在該行設置值。 代碼是這樣的。

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事件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM