2012-12-21 4 views
1

이들은 Java 스윙의 jTable 코드입니다.jTable의 헤더를 표시 할 수 없습니다.

private JTable getJTable() { 
    if (jTable == null) { 
     Vector columnNames = new Vector(); //Vector class allows dynamic array of objects 
     Vector data = new Vector(); 
     JPanel panel = new JPanel(); 
     panel.setSize(new Dimension(198, 106)); 

     try { 
      DBController db = new DBController(); 
      db.setUp("IT Innovation Project"); 
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance(); 
      String dsn = "IT Innovation Project"; 
      String s = "jdbc:odbc:" + dsn; 
      Connection con = DriverManager.getConnection(s, "", ""); 
      String sql = "Select * from forumTopics"; 
      java.sql.Statement statement = con.createStatement(); 
      ResultSet resultSet = statement.executeQuery(sql); 
      ResultSetMetaData metaData = resultSet.getMetaData(); 
      int columns = metaData.getColumnCount(); 

      for (int i = 1; i <= columns; i++) { 
       columnNames.addElement(metaData.getColumnName(i)); 
      } 

      while (resultSet.next()) { 
       Vector row = new Vector(columns); 
       for (int i = 1; i <= columns; i++) { 
        row.addElement(resultSet.getObject(i)); 
       } 
       data.addElement(row); 
      } 

      resultSet.close(); 
      ((Connection) statement).close(); 
     } catch (Exception e) { 
      System.out.println(e); 
     } 

     jTable = new JTable(data, columnNames); 
     TableColumn column; 

     for (int i = 0; i < jTable.getColumnCount(); i++) { 
      column = jTable.getColumnModel().getColumn(i); 
      column.setMaxWidth(250); 
     } 

     String header[] = {"description", "title", "category", "posted by"}; 

     for(int i=0;i<jTable.getColumnCount();i++) { 
      TableColumn column1 = jTable.getTableHeader().getColumnModel().getColumn(i);  
      column1.setHeaderValue(header[i]); 
     } 

     jTable.setBounds(new Rectangle(82, 218, 736, 292)); 
     jTable.setEnabled(false); 
     jTable.setRowHeight(50); 
     jTable.getRowHeight();   
    } 
    return jTable; 
} 

내 테이블의 헤더에 대한 배열을 설정했습니다. 그러나 프로그램은 헤더없이 내 데이터베이스 내의 데이터 만 표시합니다. 누군가 제게 깨달을 수 있습니까? 미리 감사드립니다.

+2

코드처럼 JScrollPaneJTable을 넣습니다. 게시 [SCCEE] (http://sscce.org) – vels4j

+0

이 답변을 살펴보십시오. http://stackoverflow.com/questions/13935934/java-jtable-column-headers-not-showing/13936925#13936925 – Amarnath

답변

3

당신이 답을 제공하기 위해 질문 캔트 도움에 추가 한

add(new JScrollPane(getJTable())); 
+0

다음을 추가했습니다. 안에 있지만 내 테이블은 스크롤 할 수 없습니다. jTable.setAutoResizeMode (JTable.AUTO_RESIZE_OFF); \t \t \t JScrollPane scroller = new JScrollPane (jTable); \t \t \t scroller.setVerticalScrollBarPolicy (JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); – GabrielHeng

+0

헤더가 표시 되니? – vels4j

+0

그래, 스크롤 창으로 테이블을 감 쌉니다. 그러면 모든 것이 이제 괜찮습니다. 이제 각 열의 너비를 조정할 것입니다. 감사합니다 여러분. – GabrielHeng

관련 문제