我想验证表格单元格中的用户输入,并使用Nimbus外观和感觉。
以下是验证整数输入的单元格编辑器的代码:WholeNumberField
它扩展了JTextField
并添加了输入验证。
当我为列设置它时,它工作正常,但它无法容纳文本:
当我使用默认单元格编辑器时,一切看起来都很好:
我怎么能把这个编辑器看作默认编辑器?
答案 0 :(得分:4)
WholeNumberField是旧代码。如果您真的想进行自定义验证,那么您应该使用DocumentFilter。
但是,在这种情况下,无需创建自定义编辑器。 JTable已经支持编辑器来验证数字。您只需要覆盖JTable的isCellEditable(...)
方法或TableModel以返回Integer.Class
,并使用正确的渲染器和编辑器。
编辑:刚刚注意到我的建议不正确。
getColumnClass(...)
以返回Integer.class,以便可以使用正确的渲染器/编辑器。 isCellEditable(...)
方法用于确定您是否可以编辑单元格。答案 1 :(得分:4)
我发现将以下内容放入自定义单元格编辑器构造函数可以解决我的问题:
Border border = UIManager.getBorder("Table.cellNoFocusBorder");
if (border != null) {
setBorder(border);
}
我的编辑扩展了JTextField。
答案 2 :(得分:1)
如果您从TableCellEditor
获得getDefaultEditor(Object.class)
的实例,则它应该已经是您可以在示例中验证的组件。