如何在單元格編輯後維護自訂 JTable 單元格渲染?
在單元格編輯後維護JTable 單元格渲染
在JTable 中,實現自訂單元格渲染和編輯功能可以增強用戶體驗。然而,確保即使在編輯操作後仍保留所需的格式至關重要。
問題
設定自訂儲存格渲染器以格式化「價格」後列中,使用者遇到了一個差異,即儲存格編輯時數位格式遺失。在這種情況下,提交編輯後可能不會套用單元格渲染器的預設值。
解決方案
要在單元格編輯後保持自訂渲染,使用正確的事件觸發器和類別非常重要。當編輯結束時,JTable 的 EditingStopped() 方法會透過 getCellEditorValue() 收集新值。然後使用 setValueAt() 通知模型,並隨後呼叫 fireTableCellUpdated()。這個綜合過程呼叫渲染器,可以擴充它來處理特殊的格式需求。
其他注意事項
對於更複雜的格式要求,建議考慮使用實例自訂渲染器作為編輯器元件本身。這樣可以更好地控制單元格的外觀和行為,即使在單元格修改後也能確保格式一致。
範例
以下程式碼片段提供了一個範例實現,示範如何將 JTable 儲存格中的貨幣值格式化為數字。自訂渲染器 (CurrencyRenderer) 處理貨幣格式,而自訂編輯器 (CurrencyEditor) 允許使用者在保持格式的同時編輯值。
import java.awt.Component; import java.awt.event.MouseEvent; import java.text.NumberFormat; import javax.swing.DefaultCellEditor; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.table.DefaultTableCellRenderer; // Custom cell renderer for currency formatting public class CurrencyRenderer extends DefaultTableCellRenderer { private NumberFormat formatter; public CurrencyRenderer(NumberFormat formatter) { this.formatter = formatter; setHorizontalAlignment(JLabel.RIGHT); } @Override public void setValue(Object value) { setText((value == null) ? "" : formatter.format(value)); } } // Custom cell editor for currency input, maintaining the formatting public class CurrencyEditor extends DefaultCellEditor { private NumberFormat formatter; private JTextField textField; public CurrencyEditor(NumberFormat formatter) { super(new JTextField()); this.formatter = formatter; textField = (JTextField) getComponent(); textField.setHorizontalAlignment(JTextField.RIGHT); textField.setBorder(null); } @Override public Object getCellEditorValue() { try { return new Double(textField.getText()); } catch (NumberFormatException e) { return Double.valueOf(0); } } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { textField.setText((value == null) ? "" : formatter.format((Double) value)); return textField; } }
透過合併這些技術,開發人員可以確保自訂儲存格渲染和編輯功能在 JTable 中無縫協作,提供一致且使用者友好的資料操作體驗。
以上是如何在單元格編輯後維護自訂 JTable 單元格渲染?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

在使用IntelliJIDEAUltimate版本啟動Spring...

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

Redis緩存方案如何實現產品排行榜列表的需求?在開發過程中,我們常常需要處理排行榜的需求,例如展示一個�...

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...
