列名无效:为什么列名不显示呢?来源: 发布时间:星期一, 2008年11月24日 浏览:188次 评论:0
jtree.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e) { JTree jtree=(JTree) e.getSource(); int clickno=jtree.getRowForLocation(e.getX(), e.getY()); if(clickno!=-1) { TreePath treepath=jtree.getPathForRow(clickno); if(treepath.getPathCount()==3) { TreePath parentpath=treepath.getParentPath(); sa=parentpath.toString().substring(7,8);//班级名 //System.out.println(sa); TreeNode treenode=(TreeNode) treepath.getLastPathComponent(); sb=treenode.toString();//课程名 //System.out.println(sb); defaulttablemodel=new DefaultTableModel(); defaulttablemodel.addColumn("学生学号"); defaulttablemodel.addColumn("学生姓名"); defaulttablemodel.addColumn("该科成绩"); try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); c.getConnection("jdbc:odbc:studentinfo"); st=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); // System.out.println(combo2.getSelectedItem().toString()); rs=st.executeQuery("select student.Sno,student.Sname,sc.Grade from student,SC where student.Classno='"+sa+"' and student.Sno=sc.Sno and sc.Cno in (select Cno from course where Cname='"+sb+"' )"); //System.out.println(rs.next()); while(rs.next()) { data[0]=rs.getString("Sno"); data[1]=rs.getString("Sname"); data[2]=rs.getString("Grade"); System.out.println("here"); System.out.println(data[0].toString()+data[1]+data[2]); defaulttablemodel.addRow(data); } // rs=st.executeQuery("select Cno from course where Cname='"+combo2.getSelectedItem().toString()+"'"); // if(rs.next()) // sss=rs.getString("Cno").toString(); //System.out.println(sss); }catch(Exception ee) { ee.printStackTrace(); JOptionPane.showMessageDialog(null,"数据库连接失败"); } table=new JTable(defaulttablemodel); //table.getTableHeader().revalidate(); panel.add(String.valueOf(i),table); cardlayout.show(panel, String.valueOf(i)); i++; //add(table,BorderLayout.CENTER); } } } }); 这样的显示的表中 没有列名 但是将panel.add(String.valueOf(i),table); 改为panel.add(String.valueOf(i),new JScrollPane(table)); 列名居然出现了! 不知道怎么回事 深奥啊 迷茫啊 无奈啊。。。。。。 找到答案了: JScrollPane会自动取得Column Header 如果你不想用JScrollPane,要解决这个问题,必须将程序修改如下: JTable table=new JTable(p,n); table.setPreferredScrollableViewportSize(new Dimension(550,30)); panel.add(table.getTableHeader(),BorderLayout.NORTH); paneladd(table,BorderLayout.CENTER); 运行结果就会跟之前一样有行标题了. 上面的运行结果就会跟发现,每个字段的宽度都昍 0
相关文章读者评论发表评论 |