ColumnGroup g_variables = new ColumnGroup("Output Variables"); g_variables.add(cm.getColumn(1)); g_variables.add(cm.getColumn(2)); g_variables.add(cm.getColumn(3)); g_variables.add(cm.getColumn(4)); g_variables.add(cm.getColumn(5)); ////////////////////////////////////////////// class GroupableTableHeader extends JTableHeader { private static final String uiClassID = "GroupableTableHeaderUI"; protected Vector columnGroups = null;
public GroupableTableHeader(TableColumnModel model) { super(model); setUI(new GroupableTableHeaderUI()); setReorderingAllowed(false); } public void updateUI(){ setUI(new GroupableTableHeaderUI()); }
public void setReorderingAllowed(boolean b) { reorderingAllowed = false; }
public void addColumnGroup(ColumnGroup g) { if (columnGroups == null) { columnGroups = new Vector(); } columnGroups.addElement(g); }
public Enumeration getColumnGroups(TableColumn col) { if (columnGroups == null) return null; Enumeration e = columnGroups.elements(); while (e.hasMoreElements()) { ColumnGroup cGroup = (ColumnGroup)e.nextElement(); Vector v_ret = (Vector)cGroup.getColumnGroups(col,new Vector()); if (v_ret != null) { return v_ret.elements(); } } return null; }
public void setColumnMargin() { if (columnGroups == null) return; int columnMargin = getColumnModel().getColumnMargin(); Enumeration e = columnGroups.elements(); while (e.hasMoreElements()) { ColumnGroup cGroup = (ColumnGroup)e.nextElement(); cGroup.setColumnMargin(columnMargin); } }
}
//////////////////////////// class GroupableTableHeaderUI extends BasicTableHeaderUI {
public void paint(Graphics g, JComponent c) { Rectangle clipBounds = g.getClipBounds(); if (header.getColumnModel() == null) return; //((GroupableTableHeader)header).setColumnMargin();注释掉就 OK int column = 0;
Dimension size = header.getSize(); Rectangle cellRect = new Rectangle(0, 0, size.width, size.height); Hashtable h = new Hashtable(); int columnMargin = header.getColumnModel().getColumnMargin();