为什么在Frame中加入JTable后,运行时需点击控件所在位置才能显示表格?
且若有其它窗口盖住JTable后再移开也会无法还原显示?
是不是JTable一定要放在JFrame中,还是哪个参数没设置好啊?

解决方案 »

  1.   

    JTable table = new JTable();
        JScrollPane jspane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        jspane.setViewportView(table);
    要先把table放到JScrollPane 上,然后把JScrollPane 放到Frame 上就可以了。。
      

  2.   

    public void start()throws SQLException,ClassNotFoundException{
               Statement stmt;
               ResultSet rs;           Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
               String url="jdbc:odbc:not";
               Connection con=DriverManager.getConnection(url);
               stmt=con.createStatement();
               rs=stmt.executeQuery("select * from fen");
               ResultSetMetaData meta=rs.getMetaData();           int cols=meta.getColumnCount();
               System.out.println(cols);
               titles=new String[cols];
               for(int i=0;i<cols;i++){
                 titles[i]=meta.getColumnName(i+1);
               }           records.removeAllElements();
               while(rs.next()){
                 Vector rec_vector=new Vector();
                 for(int i=0;i<titles.length;i++){
                   rec_vector.addElement(rs.getObject(i+1).toString());
                 }
                 records.addElement(rec_vector);
               }
               table=new JTable(tm);
               table.setToolTipText("显示全部查询结果");
               table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
               table.setCellSelectionEnabled(false);
               table.setShowVerticalLines(true);
               table.setShowHorizontalLines(true);
              scrollpane=new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
              scrollpane.setViewportView(table);
              add(scrollpane);          tm.fireTableStructureChanged();
              scrollpane.setLocation(200,200);
              scrollpane.setSize(350,300);
               scrollpane.setVisible(true); }这是其中一个函数,tm等在其它函数中已经定义了
    另外我试了,如果在Frame中加入JButton控件的话,也会出现以上问题,是不是Swing控件的显示与AWT的不一样啊???
      

  3.   

    帮楼主顶一下。
    也向楼主请教一下,能否把定义tm的代码也贴出来,我想从你哲学一下怎么用vector,我不知道你的vector和tm是怎么联系的,请赐教
      

  4.   

    public void init(){
                  records=new Vector();
                  tm=new AbstractTableModel(){
                    public int getColumnCount(){
                      return titles.length;
                    }
                      public int getRowCount(){
                        return records.size();
                      }
                       public Object getValueAt(int row,int column){
                         if(!records.isEmpty())
                               return ((Vector)records.elementAt(row)).elementAt(column);
                          else
                              return null;
                       }
                       public String getColumnName(int column){
                         return titles[column];
                       }
                       public void setValueAt(Object value,int row,int column){                   }
                       public Class getColumnClass(int c){
                         return getValueAt(0,c).getClass();
                       }
                       public boolean isCellEditable(int row,int column){
                         return false;
                       }
                  };         }
      

  5.   

    scrollpane.setViewportView(table);
    改成:add呢??
      

  6.   

    我用的是jScrollPane.getViewport().add(table);可以显示的,但是这样设计的表格,好像不容易实现对单元格内的内容修改的操作,你知道怎么实现吗?
      

  7.   

    我也是刚使用这个表格,不太清楚怎么修改,查查JTable的类库吧,应该会有相关函数的
    我这儿为什么还是显示不正常?郁闷啊,拖动其它窗口的时候就好像橡皮一样把这个控件擦去了,要点击后才会出现。
    是不是有显示函数没写对啊?
      

  8.   

    偶直接就是scrollpane=new JScrollPane(table); scrollpane.setVisible(true); add(scrollpane);
    没有遇到过同样的问题....
    学习学习