知识大全 java中如何实现表格的多表头显示
Posted 表格
篇首语:在任何情况下,你都要学习——以更换学习内容作为你的休息。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 java中如何实现表格的多表头显示相关的知识,希望对你有一定的参考价值。
首先声明 这些内容都是借鉴来的 稍微改动了一下 主要就是三个应用类ColumnGroup GroupableTableHeader GroupableTableHeaderU和一个示例类GroupableHeaderExample ColumnGroup类主要负责多表头的构建 import java awt Component; import java awt Dimension; import java util Enumeration; import java util Vector; import javax swing JLabel; import javax swing JTable; import javax swing UIManager; import javax swing table DefaultTableCellRenderer; import javax swing table JTableHeader; import javax swing table TableCellRenderer; import javax swing table TableColumn; public class ColumnGroup protected TableCellRenderer renderer; protected Vector v; protected String text; protected int margin = ; public ColumnGroup(String text) this(null text); public ColumnGroup(TableCellRenderer renderer String text) if (renderer == null) this renderer = new DefaultTableCellRenderer() public Component getTableCellRendererComponent(JTable table Object value boolean isSelected boolean hasFocus int row int column) JTableHeader header = table getTableHeader(); if (header != null) setForeground(header getForeground()); setBackground(header getBackground()); setFont(header getFont()); setHorizontalAlignment(JLabel CENTER); this setText((value == null) ? : value toString()); setBorder(UIManager getBorder( TableHeader cellBorder )); return this; ; else this renderer = renderer; this text = text; v = new Vector(); /** * @param obj * TableColumn or ColumnGroup */ public void add(Object obj) if (obj == null) return; v addElement(obj); /** * @param c * TableColumn * @param v * ColumnGroups */ public Vector getColumnGroups(TableColumn c Vector g) g addElement(this); if (ntains(c)) return g; Enumeration enumeration = v elements(); while (enumeration hasMoreElements()) Object obj = enumeration nextElement(); if (obj instanceof ColumnGroup) Vector groups = (Vector) ((ColumnGroup) obj) getColumnGroups(c (Vector) g clone()); if (groups != null) return groups; return null; public TableCellRenderer getHeaderRenderer() return renderer; public Object getHeaderValue() return text; public int getSize() return v == null ? : v size(); public Dimension getSize(JTable table) Component p = renderer getTableCellRendererComponent(table getHeaderValue() false false ); int height = p getPreferredSize() height; int width = ; Enumeration enumeration = v elements(); while (enumeration hasMoreElements()) Object obj = enumeration nextElement(); if (obj instanceof TableColumn) TableColumn aColumn = (TableColumn) obj; width += aColumn getWidth(); width += margin; else width += ((ColumnGroup) obj) getSize(table) width; return new Dimension(width height); /** * * 创建日期:( : : ) * * @return java lang String */ public java lang String getText() return text; /** * 列表头中删除Column 创建日期:( : : ) */ public boolean removeColumn(ColumnGroup ptg TableColumn tc) boolean retFlag = false; if (tc != null) for (int i = ; i < ptg.v.size(); i++) Object tmpObj = ptg.v.get(i); if (tmpObj instanceof ColumnGroup) retFlag = removeColumn((ColumnGroup) tmpObj, tc); // 如果找到返回 if (retFlag) break; else if (tmpObj instanceof TableColumn) // 判断是否查找的对象 if (tmpObj == tc) ptg.v.remove(i); retFlag = true; break; return retFlag; /** * 列表头中删除ColumnGrp 删除返回true,否则返回false; 创建日期:(2002-9-25 15:49:00) */ public boolean removeColumnGrp(ColumnGroup ptg, ColumnGroup tg) boolean retFlag = false; if (tg != null) for (int i = 0; i < ptg.v.size(); i++) Object tmpObj = ptg.v.get(i); if (tmpObj instanceof ColumnGroup) // 判断是否查找的对象 if (tmpObj == tg) ptg.v.remove(i); retFlag = true; break; else retFlag = removeColumnGrp((ColumnGroup) tmpObj, tg); // 如果找到返回 if (retFlag) break; else if (tmpObj instanceof TableColumn) break; return retFlag; public void setColumnMargin(int margin) this.margin = margin; Enumeration enumeration = v.elements(); while (enumeration.hasMoreElements()) Object obj = enumeration.nextElement(); if (obj instanceof ColumnGroup) ((ColumnGroup) obj).setColumnMargin(margin); public void setHeaderRenderer(TableCellRenderer renderer) if (renderer != null) this.renderer = renderer; /** * * 创建日期:(2003-7-14 10:53:26) * * @param newText * java.lang.String */ public void setText(java.lang.String newText) text = newText; 2、GroupableHeader继承自JTableHeader,为多表头结构的管理者 import java.util.Enumeration; import java.util.Vector; import javax.swing.table.JTableHeader; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; /** * GroupableTableHeader * @author flyx */ public 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); setRequestFocusEnabled(false); public void addColumnGroup(ColumnGroup g) if (columnGroups == null) columnGroups = new Vector(); columnGroups.addElement(g); /** * * 创建日期:(2001-8-31 15:54:29) */ public void clearColumnGroups() columnGroups = null; public ColumnGroup[] getColumnGroups() ColumnGroup[] retg=null; if (columnGroups.size()>0) retg=new ColumnGroup[columnGroups.size()]; pyInto(retg); return retg; public Enumeration getColumnGroups(TableColumn col) if (columnGroups == null) return null; Enumeration enum = columnGroups.elements(); while (enum.hasMoreElements()) ColumnGroup cGroup = (ColumnGroup) enum.nextElement(); Vector v_ret = (Vector) cGroup.getColumnGroups(col, new Vector()); if (v_ret != null) return v_ret.elements(); return null; /** * Identifies whether or not this ponent can receive the focus. * A disabled button, for example, would return false. cha138/Article/program/Java/JSP/201311/19359相关参考
左侧是表头的JS表格控件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!左侧是表头的表格数据展现&n
excel表格中如何将所做表格以外的区域不显示?可以使用以下步骤进行设置:1、选中所做表格以外右面相邻的整列,按CTRL+SHIFT+右键头组合键。2、右击选区,选择隐藏。3、选中所做表格以外下面相邻
当Gridview没有数据显示表头 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在开发的时候很
知识大全 谁知道重庆幸运农场破解技+巧表格中如何让数字前面的零显示出来
谁知道重庆幸运农场破解技+巧表格中如何让数字前面的零显示出来不太复杂如何幸运农场技+巧专家表格中如何让数字前面的零显示出来专家知道Excel表格中幸运+农场第一位置技+巧如何让数字前面的零显示出来如何
EXCEL表格中怎样写上公式把计算过程显示出来 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!EXC
Java程序中的多线程 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一为什么会排队等待? 下
Java程序中的多线程(四) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 作者NeelVKum
Java程序中的多线程(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 作者NeelVKum
Java程序中的多线程(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 作者NeelVKum
知识大全 excel表格里只显示公式,而不显示数字是怎么回事?
excel表格里只显示公式,而不显示数字是怎么回事?在Excel中进行公式计算时,有时公式会返回“#VALUE!”错误值。出现的原因有以下几点:1、在公式中将文字型别的资料参与了数值运算。解决:将文字