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

Art*_*sov 2 java swing jtable look-and-feel tablecelleditor

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

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

文字剪切

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

正常的样子

这个编辑器如何看起来像默认编辑器?

cam*_*ckr 5

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

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

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

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


Tor*_*öhr 5

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

Border border = UIManager.getBorder("Table.cellNoFocusBorder");
if (border != null) {
    setBorder(border);
}
Run Code Online (Sandbox Code Playgroud)

我的编辑器扩展了 JTextField。