Swing之JTable篇设置表格单元格的内容对齐方式

设置表单元格内容对齐方式在开发中也会经常遇到。

需要继承DefaultCellEditor类,并重写:
public Component getTableCellEditorComponent(JTable table,
                                             Object value,
                                             boolean isSelected,
                                             int row,
                                             int column)实现 TableCellEditor 接口。

指定者:
接口 TableCellEditor 中的 getTableCellEditorComponent
参数:
table - 要求编辑器进行编辑的 JTable;可以为 null
value - 要编辑的单元格的值;由具体的编辑器解释和绘制该值。例如,如果 value 是字符串 "true",则它可呈现为字符串,或者也可作为已选中的复选框来呈现。null 是有效值
isSelected - 如果使用突出显示来呈现该单元格,则为 true
row - 要编辑的单元格所在行
column - 要编辑的单元格所在列
返回:
要编辑的组件
import java.awt.BorderLayout;   
import java.awt.Component;   
import java.awt.Font;   
  
import javax.swing.DefaultCellEditor;   
import javax.swing.JFrame;   
import javax.swing.JScrollPane;   
import javax.swing.JTable;   
import javax.swing.JTextField;   
import javax.swing.SwingConstants;   
import javax.swing.table.DefaultTableModel;   
  
public class DefaultCellEditorJTextFieldAlignment extends JFrame {   
  DefaultTableModel model = new DefaultTableModel(new Object[][] { { "some", "text" },   
      { "any", "text" }, { "even", "more" }, { "text", "strings" }, { "and", "other" },   
      { "text", "values" } }, new Object[] { "Column 1", "Column 2" });   
  
  public DefaultCellEditorJTextFieldAlignment() {   
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
    JTable table = new JTable(model);   
       
    //设置默认编辑对象   
    table.setDefaultEditor(Object.class, new MyEditor());   
    getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);   
    pack();   
  }   
  
  public static void main(String arg[]) {   
    new DefaultCellEditorJTextFieldAlignment().setVisible(true);   
  }   
}   
  
class MyEditor extends DefaultCellEditor {   
  public MyEditor() {   
    super(new JTextField());   
  }   
  
  public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,   
      int row, int column) {   
    //获得默认表格单元格控件   
    JTextField editor = (JTextField) super.getTableCellEditorComponent(table, value, isSelected,   
        row, column);   
  
    if (value != null)   
      editor.setText(value.toString());   
    if (column == 0) {   
      //设置对齐方式   
      editor.setHorizontalAlignment(SwingConstants.CENTER);   
      editor.setFont(new Font("Serif", Font.BOLD, 14));   
    } else {   
      editor.setHorizontalAlignment(SwingConstants.RIGHT);   
      editor.setFont(new Font("Serif", Font.ITALIC, 12));   
    }   
    return editor;   
  }   
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值