在我的应用程序中,我有一个2列的org.jdesktop.swingx.JXTable。两列都包含String数据。一列使用默认单元格编辑器(org.jdesktop.swingx.JXTable.GenericEditor),另一列使用自定义单元格编辑器(CustomCellEditor.java)。
使用Windows L& F两个单元格呈现相同;然而,对于GTK L& F,存在轻微差异,导致文本被遮挡。需要设置什么属性才能在GTK上正确呈现自定义编辑器?
private class CustomCellEditor extends DefaultCellEditor
{
public CustomCellEditor(int maxStringLength)
{
super(new JTextField()
((JTextField) editorComponent).setDocument(new CustomDocument(maxStringLength));
}
class CustomDocument extends PlainDocument
{
private int limit;
public CustomDocument(int limit)
{
super();
this.limit = limit;
}
@Override
public void insertString(int offset, String str, AttributeSet attr)
throws BadLocationException
{
//...
}
}
}
Windows上的默认值:
Windows上的自定义:
Ubuntu上的默认值:
Ubuntu上的自定义:
答案 0 :(得分:2)
我过去遇到同样的问题,但是使用Nimbus L& F My issue
解决这个问题
JTextField#setBorder( null )
在您的代码中
public CustomCellEditor(int maxStringLength)
{
super(new JTextField());
((JTextField) editorComponent).setDocument(new CustomDocument(maxStringLength));
((JTextField) editorComponent).setBorder(null); // cast may be not needed
}