2017-12-15 3 views
0

Ich muss die Spaltennamen in der JTable ändern. Jetzt werden die Namen automatisch aus der Datenbank übernommen. Ich möchte Spaltennamen wie "country" und "sum" zB in "Name des Landes" und "Summe des Netamounts" ändern. Ich verwende Vector, um meine JTable zu erstellen, daher ist es ein Problem, die Namen zu ändern.So ändern Sie die Namen der Spalten in JTable

Mein Code:

public class App extends JFrame{ 

public App() { 

    Vector<Object> columnNames = new Vector<Object>(); 
    Vector<Object> data = new Vector<Object>(); 

    ... 

    stmt = c.createStatement(); 
    query = "select * from country"; 
     rs = stmt.executeQuery(query); 
     ResultSetMetaData md = rs.getMetaData(); 
     int columns = md.getColumnCount(); 

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

     while (rs.next()) 
     { 
      Vector<Object> row = new Vector<Object>(columns); 

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

      data.addElement(row); 
     } 

     rs.close(); 
     stmt.close(); 
     c.close(); 
    } 
    catch(Exception e) 
    { 
     System.out.println(e); 
    } 

    DefaultTableModel model = new DefaultTableModel(data, columnNames) 
    { 
     @Override 
     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; 
     } 
    }; 

    JTable table = new JTable(model); 
    JScrollPane scrollPane = new JScrollPane(table); 
    getContentPane().add(scrollPane); 

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

public static void main(String[] args) 
{ 
    App frame = new App(); 
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE); 
    frame.pack(); 
    frame.setVisible(true); 
} 
} 
+0

Mögliche Duplikat [Dynamisch die Spaltenüberschrift Text in JTable Ändern] (https://stackoverflow.com/questions/1496143/dynamically-changing -die-spalte-header-text-in-jtabelle) –

Antwort

1

Wenn Sie die Spaltennamen manuell steuern Sie so etwas wie tun:

String[] columnNames = {"Column1", "Column2", "Column3", "Column4"}; 
DefaultTableModel model = new DefaultTableModel(columnNames, 0) 

Sie die Meta-Daten müssen für die Spaltennamen nicht mehr.

Dann, wenn Sie Schleife durch die ResultSet Sie gerade tun:

while (rs.next()) 
{ 
    Vector<Object> row = new Vector<Object>(columns); 

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

    model.addRow(row) 
} 

JTable table = new JTable(model); 
Verwandte Themen