2013-04-11 79 views
1

我已經設置了默認的字體在我的JTable作爲展示如下更改JTable中單元格的字體,而編輯它

myTable.setFont(new java.awt.Font("Verdana", 1, 10)); 

我想表明我的JTable中一個更大的字體,而有些數據被輸入到細胞內。所以我用MyTableCellEditor自定義類。

public class MyTableCellEditor extends AbstractCellEditor implements TableCellEditor { 

    JComponent component = new JTextField(); 

    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, 
     int rowIndex, int vColIndex) { 

     ((JTextField) component).setText((String) value); 
     ((JTextField) component).setFont(new Font("Verdana", 1, 12)); 

     return component; 
    } 

    public Object getCellEditorValue() { 
     return ((JTextField) component).getText(); 
    } 
} 

下面是我將CustomCellEditor附加到我的表的代碼。

myTable.getColumnModel().getColumn(1).setCellEditor(new MyTableCellEditor()); 

但這個代碼似乎並不work.The細胞字體變小,而編輯的,一旦我完成編輯並回車,將默認的JTable字體,我設定(宋體10)呈effect.Why出現這樣的情況?我已經將CustomCellEditor字體設置爲(Verdana 12)給我的單元格。

+0

對我來說就像一個魅力。當我編輯單元格時,字體變得更粗大。考慮發佈[SSCCE](http://sscce.org)以瞭解您的問題的底部。 – 2013-04-11 16:04:45

+0

要小心:cellEditor的實現是**無效**(因爲它不通知它的聽衆) – kleopatra 2013-04-19 13:16:02

回答

3

不要爲此創建新類。只需更改DefaultCellEditor的屬性即可:

JTextField textField = new JTextField(); 
textField.setFont(new Font("Verdana", 1, 12)); 
textField.setBorder(new LineBorder(Color.BLACK)); 
DefaultCellEditor dce = new DefaultCellEditor(textField); 
myTable.getColumnModel().getColumn(1).setCellEditor(dce); 
+0

你的答案伎倆! – cherit 2013-04-11 16:12:42