首頁 >Java >java教程 >如何在單元格編輯後保留自訂 JTable 單元格渲染?

如何在單元格編輯後保留自訂 JTable 單元格渲染?

Barbara Streisand
Barbara Streisand原創
2024-12-06 12:00:32649瀏覽

How to Preserve Custom JTable Cell Rendering After Cell Editing?

單元格編輯後維護JTable 單元格渲染

在上一個問題中,重點是將JTable 列格式化為字串,但將排序功能設為雙精度。經過這個討論,出現了一個新問題:編輯單元格值後如何保留單元格渲染?

具體來說,問題是使用自訂單元格渲染器格式化單元格後,然後實作 JTextField 編輯器,編輯單元格後,自訂渲染器的格式會遺失。這就引出了一個問題:渲染器是否不打算在初始資料顯示後繼續渲染單元格?

解決問題

幸運的是,這不是渲染器無法正常工作的問題預期的。關鍵在於理解表格的編輯過程。編輯結束時,表格的 EditingStopped() 方法透過 getCellEditorValue() 擷取更新的值,並將其用於模型中的 setValueAt()。這反過來會觸發 fireTableCellUpdated(),呼叫指定的渲染器。因此,覆蓋預設渲染器應該足以維持數位格式。

在實作需要更大彈性的情況下,使用渲染器實例作為編輯器元件是可行的選擇。以下是一個範例:

// ...

table.setDefaultRenderer(Double.class, new CurrencyRenderer(nf));
table.setDefaultEditor(Double.class, new CurrencyEditor(nf));

// ...

private static class CurrencyEditor extends DefaultCellEditor {

    // ...

    @Override
    public Object getCellEditorValue() {
        // ...
    }

    @Override
    public Component getTableCellEditorComponent(JTable table,
        Object value, boolean isSelected, int row, int column) {
        // ...
    }
}

透過採用此方法,自訂渲染器既可用於渲染儲存格又可促進其編輯。

以上是如何在單元格編輯後保留自訂 JTable 單元格渲染?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn