自定义单元格编辑器无法容纳Nimbus外观中的文本

时间:2011-10-26 12:41:25

标签: java swing jtable look-and-feel tablecelleditor

我想验证表格单元格中的用户输入,并使用Nimbus外观和感觉。 以下是验证整数输入的单元格编辑器的代码:WholeNumberField 它扩展了JTextField并添加了输入验证。

当我为列设置它时,它工作正常,但它无法容纳文本:

text cut

当我使用默认单元格编辑器时,一切看起来都很好:

normal look

我怎么能把这个编辑器看作默认编辑器?

3 个答案:

答案 0 :(得分:4)

WholeNumberField是旧代码。如果您真的想进行自定义验证,那么您应该使用DocumentFilter

但是,在这种情况下,无需创建自定义编辑器。 JTable已经支持编辑器来验证数字。您只需要覆盖JTable的isCellEditable(...)方法或TableModel以返回Integer.Class,并使用正确的渲染器和编辑器。

编辑:刚刚注意到我的建议不正确。

  1. 您需要覆盖getColumnClass(...)以返回Integer.class,以便可以使用正确的渲染器/编辑器。
  2. isCellEditable(...)方法用于确定您是否可以编辑单元格。

答案 1 :(得分:4)

我发现将以下内容放入自定义单元格编辑器构造函数可以解决我的问题:

Border border = UIManager.getBorder("Table.cellNoFocusBorder");
if (border != null) {
    setBorder(border);
}

我的编辑扩展了JTextField。

答案 2 :(得分:1)

如果您从TableCellEditor获得getDefaultEditor(Object.class)实例,则它应该已经是您可以在示例中验证的组件。