JTable column spanning

前端 未结 3 1707
攒了一身酷
攒了一身酷 2021-01-18 07:10

I am trying to make a JTable that has column spans available. Specifically, I am looking to nest a JTable inside another JTable, and w

3条回答
  •  孤街浪徒
    2021-01-18 07:24

    Based on Code from Code-Guru:

    /*
     *  (swing1.1beta3)
     * 
     * |-----------------------------------------------------|
     * |   1st  |      2nd    |      3rd         |
     * |-----------------------------------------------------|
     * |    |    |    |    |        |        |
     */
    //package jp.gr.java_conf.tame.swing.examples;
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;
    
    import jp.gr.java_conf.tame.swing.table.*;
    
    /**
     * @version 1.0 11/09/98
     */
    public class MultiWidthHeaderExample extends JFrame {
    
      MultiWidthHeaderExample() {
        super( "Multi-Width Header Example" );
    
        DefaultTableModel dm = new DefaultTableModel();
        dm.setDataVector(new Object[][]{
          {"a","b","c","d","e","f"},
          {"A","B","C","D","E","F"}},
        new Object[]{"1 st","","","","",""});
    
        JTable table = new JTable( dm ) {
          protected JTableHeader createDefaultTableHeader() {
            return new GroupableTableHeader(columnModel);
          }
        };
        TableColumnModel cm = table.getColumnModel();
        ColumnGroup g_2nd = new ColumnGroup("2 nd");
        g_2nd.add(cm.getColumn(1));
        g_2nd.add(cm.getColumn(2));
        ColumnGroup g_3rd = new ColumnGroup("3 rd");
        g_3rd.add(cm.getColumn(3));
        g_3rd.add(cm.getColumn(4));
        g_3rd.add(cm.getColumn(5));
        GroupableTableHeader header = (GroupableTableHeader)table.getTableHeader();
        header.addColumnGroup(g_2nd);
        header.addColumnGroup(g_3rd);
        JScrollPane scroll = new JScrollPane( table );
        getContentPane().add( scroll );
        setSize( 400, 100 );  
        header.revalidate(); 
      }
    
      public static void main(String[] args) {
        MultiWidthHeaderExample frame = new MultiWidthHeaderExample();
        frame.addWindowListener( new WindowAdapter() {
          public void windowClosing( WindowEvent e ) {
            System.exit(0);
          }
        });
        frame.setVisible(true);
      }
    }
    

    Source: http://www.codeguru.com/java/articles/125.shtml (unavailable since 2012, see now in web archive)

    Other ressources:

    • Java-6 updated sources: http://qoofast.blog76.fc2.com/blog-entry-2.html (translated)
      • ColumnGroup.java
      • GroupableTableHeader.java
      • GroupableTableHeaderUI

提交回复
热议问题