知识大全 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表格控件

左侧是表头的JS表格控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!左侧是表头的表格数据展现&n

知识大全 excel表格中如何将所做表格以外的区域不显示

excel表格中如何将所做表格以外的区域不显示?可以使用以下步骤进行设置:1、选中所做表格以外右面相邻的整列,按CTRL+SHIFT+右键头组合键。2、右击选区,选择隐藏。3、选中所做表格以外下面相邻

知识大全 当Gridview没有数据 显示表头

当Gridview没有数据显示表头  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在开发的时候很

知识大全 谁知道重庆幸运农场破解技+巧表格中如何让数字前面的零显示出来

谁知道重庆幸运农场破解技+巧表格中如何让数字前面的零显示出来不太复杂如何幸运农场技+巧专家表格中如何让数字前面的零显示出来专家知道Excel表格中幸运+农场第一位置技+巧如何让数字前面的零显示出来如何

知识大全 EXCEL表格中怎样写上公式把计算过程显示出来

EXCEL表格中怎样写上公式把计算过程显示出来  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!EXC

知识大全 Java程序中的多线程

Java程序中的多线程  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一为什么会排队等待?  下

知识大全 Java 程序中的多线程(四)

Java程序中的多线程(四)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作者NeelVKum

知识大全 Java 程序中的多线程(二)

Java程序中的多线程(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作者NeelVKum

知识大全 Java 程序中的多线程(一)

Java程序中的多线程(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  作者NeelVKum

知识大全 excel表格里只显示公式,而不显示数字是怎么回事?

excel表格里只显示公式,而不显示数字是怎么回事?在Excel中进行公式计算时,有时公式会返回“#VALUE!”错误值。出现的原因有以下几点:1、在公式中将文字型别的资料参与了数值运算。解决:将文字