编辑 JTable 单元格时更改其字体

che*_*rit 2 java fonts swing jtable tablecelleditor

我已经在 J​​Table 中设置了默认字体,如下所示

myTable.setFont(new java.awt.Font("Verdana", 1, 10));
Run Code Online (Sandbox Code Playgroud)

我想在我的 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

下面是我将 CustomCellEditor 附加到表格的代码。

myTable.getColumnModel().getColumn(1).setCellEditor(new MyTableCellEditor());
Run Code Online (Sandbox Code Playgroud)

但这段代码似乎不起作用。编辑时单元格字体变小,一旦我完成编辑并按回车键,我设置的默认 JTable 字体(Verdana 10)就会生效。为什么会发生这种情况?我已经将 CustomCellEditor 字体设置为( Verdana 12 )到我的单元格。

cam*_*ckr 5

不要为此创建一个新类。只需更改 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);
Run Code Online (Sandbox Code Playgroud)