[英]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.