你们在我的上一个问题上指出了正确的方向,你们真是太棒了,我在这里有一些原始问题的扩展:
How to set a JTable column as String and sort as Double?
我现在通过使用我的自定义单元格渲染器将我的价格列格式化为$ ###,## 0.00,我现在也为单元格设置了一个JTextField编辑器 . 编辑单元格工作正常,除了更新值时,我的自定义渲染器中设置的数字格式似乎不再格式化单元格(我在编辑提交后丢失了$) . 即使在初始显示数据之后,此渲染器是否也不应渲染单元格?
我试过使用以下但没有运气:
((AbstractTableModel) table.getModel()).fireTableDataChanged();
我希望这会强制表重新验证并使用自定义渲染器重新绘制单元格以呈现新值,但遗憾的是这不起作用...
我错过了什么......显然,但是什么?
1 回答
当编辑器结束时,表的
editingStopped()
方法通过getCellEditorValue()
收集新值并将其用于模型中的setValueAt()
. 反过来,该模型应该是fireTableCellUpdated()
,它将调用规定的渲染器 . 扩展default应该足以处理Number
格式化 . 在其他情况下,使用渲染器的实例作为编辑器组件可能会很方便;这个example显示了一个典型的实现 .附录:这是使用默认编辑器和渲染器实现的基本示例 .
附录:感谢来自@mKorbel的有用评论,我正在编辑文本,如@ camickr的文章_1795942中所述 .