2013-07-19 80 views
2

在我的應用程序中,我有一個2列org.jdesktop.swingx.JXTable。兩列都包含字符串數據。一列使用默認單元格編輯器(org.jdesktop.swingx.JXTable.GenericEditor),另一列使用自定義單元格編輯器(CustomCellEditor.java)。JTable單元格渲染差異跨平臺

與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:

enter image description here

自定義在Windows上:在Ubuntu

enter image description here

默認:

enter image description here

自定義在Ubuntu:

enter image description here

+0

試着把'setBorder(null)' – nachokk

回答

2

我有同樣的問題,在過去但雨雲大號&˚FMy 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 
    } 
+0

正是需要的! – javacavaj

+0

@javacavaj是否奏效? – nachokk

+0

是的,它的工作。謝謝! – javacavaj