您的位置:首页 > 编程语言 > Java开发

java JTable表头自动换行

2008-04-01 16:55 429 查看
package util;

import javax.swing.JTextArea;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.JTable;
import javax.swing.table.JTableHeader;
import java.awt.Component;
import javax.swing.UIManager;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2008</p>
 * <p>Company: </p>
 * @Author SamZheng 2008-03-31
 * @version 1.0
 */

public class MultiLineHeaderRenderer extends JTextArea implements TableCellRenderer{
  private final DefaultTableCellRenderer adaptee = new DefaultTableCellRenderer();

  public MultiLineHeaderRenderer() {
    super(1, 50);
    setOpaque(true);
    setLineWrap(true);
    setWrapStyleWord(true);
  }

  public Component getTableCellRendererComponent(JTable table, Object obj,
                                                 boolean isSelected, boolean hasFocus,
                                                 int row,int column) {
    int width = 1;
    String value = "";
    if (table != null) {
      JTableHeader header = table.getTableHeader();
      if (header != null) {
        setForeground(header.getForeground());
        setBackground(header.getBackground());
        setFont(header.getFont());
      }
      width = header.getColumnModel().getColumn(column).getWidth();
      if(width==0)
        width = 150;
      value = header.getColumnModel().getColumn(column).getHeaderValue().toString();
    }
    setText( (value == null) ? "Column:" + column : value.toString());
    setBorder(UIManager.getBorder("TableHeader.cellBorder"));
    this.setRows((10*value.length())/width);
    //JScrollPane sp = new JScrollPane(this);
    return this;
  }
}

MultiLineHeaderRenderer multiLineHeaderRenderer = new MultiLineHeaderRenderer();
    TableColumnModel cmodel = tblMain.getColumnModel();
    cmodel.getColumn(0).setHeaderRenderer(multiLineHeaderRenderer);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息