首页 >Java >java教程 >如何在单元格编辑后保留自定义 JTable 单元格渲染?

如何在单元格编辑后保留自定义 JTable 单元格渲染?

Barbara Streisand
Barbara Streisand原创
2024-12-06 12:00:32626浏览

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