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

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

Susan Sarandon
發布: 2024-11-30 19:42:11
原創
310 人瀏覽過

How to Preserve Custom JTable Cell Rendering After Editing?

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

人們可能會遇到JTable 單元格的自訂渲染格式(例如,貨幣格式)的情況儲存格編輯後遺失。出現此問題的原因是預設情況下,編輯過程會繞過自訂渲染器直接更新表格模型。

解決方案

要解決此問題,可以擴展表的 setValueAt () 方法以確保自訂渲染器應用於更新的單元格值。以下是一個範例:

table.setValueAt(newValue, rowIndex, columnIndex);
((TableModel) table.getModel()).fireTableCellUpdated(rowIndex, columnIndex);
登入後複製

或者,可以建立一個自訂 CellEditor,利用自訂渲染器作為其編輯器元件。透過這樣做,編輯器可以在編輯期間將自訂格式套用到該值,渲染器可以在編輯完成後顯示格式化的值。

範例

以下程式碼示範了使用CurrencyRenderer的自訂CurrencyEditor:

public class CurrencyEditor extends DefaultCellEditor {

    private JTextField textField;

    public CurrencyEditor() {
        super(new JTextField());
        textField = (JTextField) this.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) ? "" : CurrencyRenderer.format(value));
        return textField;
    }
}
登入後複製
public class CurrencyRenderer extends DefaultTableCellRenderer {

    private static DecimalFormat formatter = new DecimalFormat("$###,##0.00");

    public CurrencyRenderer() {
        this.setHorizontalAlignment(JLabel.RIGHT);
    }

    @Override
    public void setValue(Object value) {
        setText((value == null) ? "" : formatter.format(value));
    }

    public static String format(Object value) {
        return formatter.format(value);
    }
}
登入後複製

透過使用提供的範例,您可以使用提供的範例,您可以使用提供的範例,您可以使用提供的範例,您可以使用提供的範例,您可以使用提供的範例,您可以使用提供的範例,您可以使用提供的範例,您可以使用提供的範例,您可以使用提供的範例,您可以使用提供的範例,您可以使用提供的範例,您可以使用提供的範例,您可以使用。在JTable 中編輯單元格後維護自訂單元格渲染。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板