JPanel p1=new JPanel();
Container cp = getContentPane();
JScrollPane sp1 = new JScrollPane(p1); 
JTable table=new JTable(ss ,s);//ss为内容的二维数组,S是标题的一维数组。
p1.add(table);
sp1.setPreferredSize(new Dimension(150,150));
cp.add(sp1);
这样,在表格中只有,SS的内容,没有S
如果程序改成这样:
JTable table = new JTable(ss, s);
JScrollPane scroll = new JScrollPane(table);
 getContentPane().add(scroll);
这样就一切正常
请问第1步,为什么,不能显示标题数组S啊?

解决方案 »

  1.   

    JScrollPane sp1 = new JScrollPane(p1); 
    去掉这个
    直接把jtable加到JScrollPane里
    但是必须 需要JScrollPane
    如果你加在JScrollPane还需要修改jtable中别的参数
      

  2.   

    仅用add方法可能不能显示列头部,我看到的一般都是JScrollPane .getViewport.add(table)
      

  3.   

    我说过在不修改jtable其他参数的前提下
    必须把jtable加到JScrollPane里
    才可以显示header
    那么按照你的就是把它加到了jpanel里面这样的话,相当于没有加到JScrollPane里
    自然显示不出来header了
      

  4.   

    后面的s应该是个string 类型的表头
    就是最上面显示每一列是什么内容。
    表头:    学生编号  学生姓名    这个是后面的s控制的
    内容:    001        aaa        这个是2位数组里面控制的
    表头的显示是要用header把他显示出来的
      

  5.   

    不小心按错了键,刚粘贴完zt9788(zt) 的名字就发出去了,汗。。zt9788(zt)
       是正解
    楼主的第一步是把JTable加到了p1(JPanel)里面,
    然后把p1加到JScrollPane里,
    是间接加到JScrollPane中去的,
    而JTable必须直接加到JScrollPane里才能显示表头
      

  6.   

    楼上的也就是说
    只有直接把JTable加到JScrollPane里才能显示表头
    其它没方法了?
      

  7.   

    如果不放在JScrollPane只能通过修改jtable.getheader...()后,修改其参数来实现
    ,具体的忘了~~
      

  8.   

    一般都会把表格加到JScrollPane里
      

  9.   

    import java.awt.BorderLayout;
    import java.io.IOException;import javax.swing.JFrame;
    import javax.swing.JTable;public class T {
    public static void main(String[] args) throws IOException {
    JTable table = new JTable(5, 3);

    JFrame f = new JFrame();
    f.getContentPane().add(table, BorderLayout.CENTER);
    f.getContentPane().add(table.getTableHeader(), BorderLayout.NORTH);
    f.setSize(200 ,200);
    f.setLocationRelativeTo(null);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setVisible(true);
    }
    }
      

  10.   

    必须把JTable直接加到JScrollPane上