1

以下に示すように、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());

しかし、このコードは機能していないようです。編集中にセルのフォントが小さくなり、編集を終了してEnterキーを押すと、設定したデフォルトのJTableフォント(Verdana 10)が有効になります.なぜこれが起こっているのですか?CustomCellEditor フォントを ( Verdana 12 ) としてセルに設定しました。

4

1 に答える 1

4

このために新しいクラスを作成しないでください。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);
于 2013-04-11T16:03:09.260 に答える