2016-04-29 7 views
1

Dies ist eine Followup Frage zu Display database table with swingSpaltenüberschrift nicht auftauchen, selbst nachdem die Tabelle mit JScrollPane Einwickeln

ich meine Tabelle in einem JScrollPane gewickelten aber der Spalte Header zeigen noch nicht auf!

Kann mir jemand sagen, was los ist?

try { 
    con = (Connection) DriverManager.getConnection(DATABASE_URL , USERNAME, PASSWORD); 
    stmt = (Statement) con.createStatement(); 
    ResultSet rs = stmt.executeQuery(QUERY_FIND_ITEMS); 

     { 
    ResultSetMetaData md = (ResultSetMetaData) rs.getMetaData(); 
    int columns = md.getColumnCount(); 

    // Get column names 
    for (int i = 1; i <= columns; i++) 
    { 
     columnNames.add(md.getColumnName(i)); 
    } 

    // Get row data 
    while (rs.next()) 
    { 
     ArrayList row = new ArrayList(columns); 

     for (int i = 1; i <= columns; i++) 
     { 
      row.add(rs.getObject(i)); 
     } 

     data.add(row); 
    } 
} 
} 
catch (SQLException e) 
{ 
    System.out.println(e.getMessage()); 
} 

Vector<String> columnNamesVector = new Vector(); 
Vector dataVector = new Vector(); 

for (int i = 0; i < data.size(); i++) 
{ 
    ArrayList subArray = (ArrayList)data.get(i); 
    Vector subVector = new Vector(); 

    for (int j = 0; j < subArray.size(); j++) 
    { 
     subVector.add(subArray.get(j)); 
    } 
    dataVector.add(subVector); 
} 

for (int i = 0; i < columnNames.size(); i++) { 
    columnNamesVector.add(columnNames.get(i)); 
} 
// Create table with database data  
JTable table = new JTable(dataVector, columnNamesVector) 
{ 
    public Class getColumnClass(int column) 
    { 

     for (int row = 0; row < getRowCount(); row++) 
     { 
      Object o = getValueAt(row, column); 

      if (o != null) 
      { 
       return o.getClass(); 
      } 
     } 


     return Object.class; 
    } 
}; 


      JScrollPane scrollPane =new JScrollPane(table); 
      getContentPane().add(scrollPane, BorderLayout.WEST); 

      JPanel buttonPanel = new JPanel(); 
      getContentPane().add(buttonPanel, BorderLayout.SOUTH); 

      table.setForeground(Color.BLUE); 
+0

@AndrewThompson: Der Code ist in der Folgefrage. Soll ich es hier neu posten? – AIR

Antwort

2
catch (SQLException e) 
{ 
    System.out.println(e.getMessage()); 
} 

Der Code nach dem Ende des catch Block wird nicht korrekt funktionieren, wenn die DB-Abfrage fehlschlägt. Am besten fügen Sie diesen Code in den Block try ein.

Und ein Tipp: Wechsel

System.out.println(e.getMessage()); 

zu

e.printStackTrace(); 

Sowohl kürzeren & informativer.