Java 编辑jtable时更改单元格上的字体
我正在swing中执行一个新项目,编辑单元格时遇到问题。 编辑单元格时,字体格式会发生变化,我想设置一种特定的格式 为了做到这一点,我已经创建了一个CellEditor,用于表中的每一列Java 编辑jtable时更改单元格上的字体,java,swing,fonts,jtable,tablecelleditor,Java,Swing,Fonts,Jtable,Tablecelleditor,我正在swing中执行一个新项目,编辑单元格时遇到问题。 编辑单元格时,字体格式会发生变化,我想设置一种特定的格式 为了做到这一点,我已经创建了一个CellEditor,用于表中的每一列 Cass CellEditor public class MyTableCellEditor extends AbstractCellEditor implements TableCellEditor { JComponent component = new JTextField(); pub
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());
}
}
但格式尚未设置。有什么想法吗
谢谢
“问候”对我有效,下面是一个例子:
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();
}
}
}
导入java.awt.BorderLayout;
导入java.awt.Component;
导入java.awt.Font;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.AbstractCellEditor;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JScrollPane;
导入javax.swing.JTable;
导入javax.swing.JTextField;
导入javax.swing.table.TableCellEditor;
导入javax.swing.table.TableColumn;
公共类TestFrame扩展了JFrame{
公共静态无效主(字符串…s){
新的TestFrame();
}
公共测试框架(){
init();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
包装();
setLocationRelativeTo(空);
setVisible(真);
}
私有void init(){
最终JTable t=新JTable(3,3);
对于(int i=0;i
对我很有效,下面是一个例子:
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();
}
}
}
导入java.awt.BorderLayout;
导入java.awt.Component;
导入java.awt.Font;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入javax.swing.AbstractCellEditor;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JScrollPane;
导入javax.swing.JTable;
导入javax.swing.JTextField;
导入javax.swing.table.TableCellEditor;
导入javax.swing.table.TableColumn;
公共类TestFrame扩展了JFrame{
公共静态无效主(字符串…s){
新的TestFrame();
}
公共测试框架(){
init();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
包装();
setLocationRelativeTo(空);
setVisible(真);
}
私有void init(){
最终JTable t=新JTable(3,3);
对于(int i=0;i
对我有效,你有什么问题?真的有效吗?编辑单元格时我的字体不是我在cellEditor中定义的字体。这是Deafolt fontWorks对我有用,你有什么问题?真的有用吗?编辑单元格时我的字体不是我在cellEditor中定义的字体。是Deafolt fontOK,我会再试一次。可能在我定义单元格编辑器时没有创建行?如果我询问该列,新行是否会受到影响?还是需要再次登录?好的,现在开始工作了!电话打错了好的,我再试一次。可能在我定义单元格编辑器时没有创建行?如果我询问该列,新行是否会受到影响?还是需要再次登录?好的,现在开始工作了!电话打错地方了