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