java - 编辑 jtable 时更改单元格上的字体

标签 java swing fonts jtable tablecelleditor

我正在用 swing 做一个新项目,在编辑单元格时遇到问题。 编辑单元格时,字体格式发生变化,我想设置一个特定的格式。

为此,我创建了一个 CellEditor,分配给表格中的每一列。

Cass CellEditor

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 java.awt.Font("Arial Unicode MS", 0, 16));
    return component;
}

分配给列

private void crearEditor(){
    for (int i = 0; i < tabla.getColumnCount(); i ++) {
        TableColumn col = tabla.getColumnModel().getColumn(i);
        col.setCellEditor(new MyTableCellEditor());
        }
}

要编辑我使用的单元格:

boolean success = tabla.editCellAt(fila, columma);
if (success) {
  boolean toggle = false;
  boolean extend = false;
  tabla.changeSelection(fila, columma, toggle, extend);
}

但是格式没有设置。任何想法 谢谢 问候

最佳答案

对我有用,这里是例子:

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableColumn;

public class TestFrame extends JFrame {

    public static void main(String... s) {
         new TestFrame();
    }

    public TestFrame() {
        init();
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }

    private void init() {
        final JTable t = new JTable(3,3);
        for (int i = 0; i < t.getColumnCount(); i++) {
            TableColumn col = t.getColumnModel().getColumn(i);
            col.setCellEditor(new MyTableCellEditor());
        }
        t.setRowHeight(20);
        add(new JScrollPane(t));

        JButton b = new JButton("edit");
        b.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                boolean success = t.editCellAt(1, 1);
                if (success) {
                  boolean toggle = false;
                  boolean extend = false;
                  t.changeSelection(1, 1, toggle, extend);
                }
            }
        });

        add(b,BorderLayout.SOUTH);
    }

    public class MyTableCellEditor extends AbstractCellEditor implements TableCellEditor {
        private JTextField component = new JTextField();
        private Font font = new Font("Arial Unicode MS", 0, 16);

        public Component getTableCellEditorComponent(JTable table,
                Object value, boolean isSelected, int rowIndex, int vColIndex) {
            component.setText((String) value);
            component.setFont(font);
            return component;
        }

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

enter image description here

关于java - 编辑 jtable 时更改单元格上的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28150507/

相关文章:

java - 如何将外部文件夹添加到类路径?

java - 如何从 dsl 生成 UI 测试?

java - 如何将字体添加到 Azure Web 应用程序 Java JVM 以供服务器端使用

fonts - 设置 RTF 文档的字体样式

java - 什么是NullPointerException,我该如何解决?

java - 自动调整 JTable 列宽

java - 无法在 Java 中将 EST 时间转换为 IST 时间

java - 使用 "Instance"?不止一次

java - JTextfield 的 getter,如日期

Java 字体高级,字符宽度