本帖最后由 xierong2011 于 2011-08-24 09:28:59 编辑

解决方案 »

  1.   

    图片 http://hi.csdn.net/space-10127580-do-album-picid-899511-goto-down.html
      

  2.   

    sno是一个Label,上面两个是两个Label,放在JPanle里面,下面三个同理,后面又是一个和两个,从大小你都可以看出来是单独做的
      

  3.   

    import java.awt.BorderLayout;  002 import java.awt.Color;  003 import java.awt.event.ActionEvent;  004 import java.awt.event.ActionListener;  005 import java.util.Vector;  006    007 import javax.swing.DefaultCellEditor;  008 import javax.swing.JButton;  009 import javax.swing.JComboBox;  010 import javax.swing.JFrame;  011 import javax.swing.JPanel;  012 import javax.swing.JScrollPane;  013 import javax.swing.JTable;  014 import javax.swing.table.AbstractTableModel;  015 import javax.swing.table.TableColumnModel;  016    017 /**  018  * JTable的实用小例子  019  * @author 五斗米 <如转载请保留作者和出处>  020  * @blog http://blog.csdn.net/mq612  021  */ 022    023 public class Test {  024  private JFrame frame = null;  025    026  private JTable table = null;  027    028  private Table_Model model = null;  029    030  private JScrollPane s_pan = null;  031    032  private JButton button_1 = null, button_2 = null, button_3 = null;  033    034  private JPanel pane = null;  035    036  public Test() {  037   frame = new JFrame("JTableTest");  038   pane = new JPanel();  039   button_1 = new JButton("清除数据");  040   button_1.addActionListener(new ActionListener() {  041    public void actionPerformed(ActionEvent e) {  042     removeData();  043    }  044   });  045   button_2 = new JButton("添加数据");  046   button_2.addActionListener(new ActionListener() {  047    public void actionPerformed(ActionEvent e) {  048     addData();  049    }  050   });  051   button_3 = new JButton("保存数据");  052   button_3.addActionListener(new ActionListener() {  053    public void actionPerformed(ActionEvent e) {  054     saveData();  055    }  056   });  057   pane.add(button_1);  058   pane.add(button_2);  059   pane.add(button_3);  060   model = new Table_Model(20);  061   table = new JTable(model);  062   table.setBackground(Color.white);  063   String[] age = { "16", "17", "18", "19", "20", "21", "22" };  064   JComboBox com = new JComboBox(age);  065   TableColumnModel tcm = table.getColumnModel();  066   tcm.getColumn(3).setCellEditor(new DefaultCellEditor(com));  067   tcm.getColumn(0).setPreferredWidth(50);  068   tcm.getColumn(1).setPreferredWidth(100);  069   tcm.getColumn(2).setPreferredWidth(50);  070    071   s_pan = new JScrollPane(table);  072    073   frame.getContentPane().add(s_pan, BorderLayout.CENTER);  074   frame.getContentPane().add(pane, BorderLayout.NORTH);  075   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  076   frame.setSize(300, 200);  077   frame.setVisible(true);  078    079  }  080    081  private void addData() {  082   model.addRow("李逵", true, "19");  083   table.updateUI();  084  }  085    086  private void removeData() {  087   model.removeRows(0, model.getRowCount());  088   table.updateUI();  089  }  090    091  // 保存数据,暂时是将数据从控制台显示出来  092  private void saveData() {  093   int col = model.getColumnCount();  094   int row = model.getRowCount();  095   for (int i = 0; i < col; i++) {  096    System.out.print(model.getColumnName(i) + "\t");  097   }  098   System.out.print("\r\n");  099   for (int i = 0; i < row; i++) {  100    for (int j = 0; j < col; j++) {  101     System.out.print(model.getValueAt(i, j) + "\t");  102    }  103    System.out.print("\r\n");  104   }  105   System.out.println("------------------------------------");  106  }  107    108  public static void main(String args[]) {  109   new Test();  110   System.out.println("按下保存按钮将会把JTable中的内容显示出来\r\n------------------------------------");  111  }  112    113 }  114    115    116 /**  117  * TableModel类,继承了AbstractTableModel  118  * @author 五斗米  119  *  120  */ 121 class Table_Model extends AbstractTableModel {  122    123  private static final long serialVersionUID = -7495940408592595397L;  124    125  private Vector content = null;  126    127  private String[] title_name = { "ID", "姓名", "性别", "年龄" };  128    129  public Table_Model() {  130   content = new Vector();  131  }  132    133  public Table_Model(int count) {  134   content = new Vector(count);  135  }  136    137  public void addRow(String name, boolean sex, String age) {  138   Vector v = new Vector(4);  139   v.add(0, new Integer(content.size()));  140   v.add(1, name);  141   v.add(2, new Boolean(sex));  142   v.add(3, age);  143   content.add(v);  144  }  145    146  public void removeRow(int row) {  147   content.remove(row);  148  }  149    150  public void removeRows(int row, int count) {  151   for (int i = 0; i < count; i++) {  152    if (content.size() > row) {  153     content.remove(row);  154    }  155   }  156  }  157    158  /**  159   * 让表格中某些值可修改,但需要setValueAt(Object value, int row, int col)方法配合才能使修改生效  160   */ 161  public boolean isCellEditable(int rowIndex, int columnIndex) {  162   if (columnIndex == 0) {  163    return false;  164   }  165   return true;  166  }  167    168  /**  169   * 使修改的内容生效  170   */ 171  public void setValueAt(Object value, int row, int col) {  172   ((Vector) content.get(row)).remove(col);  173   ((Vector) content.get(row)).add(col, value);  174   this.fireTableCellUpdated(row, col);  175  }  176    177  public String getColumnName(int col) {  178   return title_name[col];  179  }  180    181  public int getColumnCount() {  182   return title_name.length;  183  }  184    185  public int getRowCount() {  186   return content.size();  187  }  188    189  public Object getValueAt(int row, int col) {  190   return ((Vector) content.get(row)).get(col);  191  }  192    193  /**  194   * 返回数据类型  195   */ 196  public Class getColumnClass(int col) {  197   return getValueAt(0, col).getClass();  198  }  199    200 } 
      

  4.   

    妹子  我以前在学校也用java swing jtable 做过的啊  可惜哥哥电脑没带公司来  要不发个给你...
      

  5.   

    混分滴
    swing问题不会,web还可以。
      

  6.   

    table里面套table, 或者是 table的表头里放多个Label 显示边框, 应该都可以实现吧 
      

  7.   

    1  import javax.swing.*;
    2  import java.awt.*;
    3  import java.awt.event.*;
    4  import java.util.*;
    5  public class SimpleTable{
    6     public SimpleTable(){
    7        JFrame f=new JFrame();
    8        Object[][] playerInfo={
    9                     {"阿呆",new Integer(66),new Integer(32),new Integer(98),new Boolean(false)},
    10                     {"阿呆",new Integer(82),new Integer(69),new Integer(128),new Boolean(true)},
    11                     };
    12       String[] Names={"姓名","语文","数学","总分","及格"};
    13       JTable table=new JTable(playerInfo,Names);
    14       table.setPreferredScrollableViewportSize(new Dimension(550,30));
    15       JScrollPane scrollPane=new JScrollPane(table);
    16       f.getContentPane().add(scrollPane,BorderLayout.CENTER);
    17       f.setTitle("Simple Table");
    18         f.pack();
    19         f.show();
    20         f.addWindowListener(new WindowAdapter() {
    21             public void windowClosing(WindowEvent e) {
    22                     System.exit(0);
    23             }
    24        });
    24   }
    25    public static void main(String[] args){
    26       SimpleTable b=new SimpleTable();
    27    }
    28 }   
        表格由两部份组成:分别是行标题(Column Header)与行对象(Column Object).利用JTable所提供的getTableHeader()方法取得
    行标题。在这个例子中,我们将JTable放在JScrollPane中,这种做法可以将Column Header与Colmn Object完整的显示出来,因为
    JScrollPane会自动取得Column Header.但如果文坛读者将上面第15行去掉并修改第16行:
           f.getContentPane().add(table,BorderLayout.CENTER);      
    则运行结果你会发现Column Header不见了。
       如果你不想用JScrollPane,要解决这个问题,你必须将程序修改如下:
       JTable table=new JTable(p,n);
       table.setPreferredScrollableViewportSize(new Dimension(550,30));
       f.getContentPane().add(table.getTableHeader(),BorderLayout.NORTH);
       f.getContentPane().add(table,BorderLayout.CENTER);
      运行结果就会跟之前一样有行标题了.
      

  8.   

    ls的代码没发现会有多行header
      

  9.   

    搜索到这个 JTable的表头合并
      

  10.   

    你用的什么软件?我记得当初我们用netbean可以拖出来的。好像是记的不太清楚了
      

  11.   

    eclipse 工具  我们正学 Java SE swing 方面的
      

  12.   

    看看这篇文章对你有帮助
    http://www.blogjava.net/zeyuphoenix/archive/2010/04/18/318690.html
      

  13.   


    这个我在网上 也看过了 但是小妹刚开始学这个 仅凭这个还做不出来呀 你能否帮我做个简单一点的多表头JTable ?  谢谢啦
      

  14.   

    看看这个,也许是你要的答案!http://www.java2s.com/Code/Java/Swing-Components/multipleRowHeaderExample.htm
      

  15.   


    不是  只不过做一个  多表头的JTable 无需从数据库调取数据呀
      

  16.   

    一句小妹儿,引得楼上诸多闷骚无限遐想。
    我算是你的大叔级,建议你也可以去stackoverflow看看。那个论坛,嗯,非常有特色。各色技术阿呆在里面解决各种各样的难题。