Lautsprecher
Erfahrenes Mitglied
Hallo,
im initialize meiner Anwendung baue ich ein JTable mit JScrollPane auf. Hierbei lese ich gleich zum ersten Mal Daten in die Tabelle:
Soweit klappt hier alles noch ganz gut. Der Benutzer kann von selbst nicht die Spaltenbreite änderen. Und die Spalten werden auch in der gewünschten Größe angezeigt.
In meiner Anwendung wird per Button-Druck ein neuer Datensatz in die Datenbank geschrieben und gleichzeitig wird dieser dann in der JTable ausgegeben und da krachts.
Die Daten werden zwar angezeigt, jedoch werden die Spaltenbreiten nicht übernommen! Alle Spalten sind wieder gleich groß!
Hat vielleicht jemand eine Idee an was das liegen kann, bzw. was ich evtl. in der Buttonmethode nicht berücksichtigt habe?
Grüße
im initialize meiner Anwendung baue ich ein JTable mit JScrollPane auf. Hierbei lese ich gleich zum ersten Mal Daten in die Tabelle:
Code:
defaultTableModel = new DefaultTableModel(1,7);
defaultTableModel.setColumnIdentifiers(Spaltenbezeichnung);
JTable table = new JTable(defaultTableModel);
initDatabaseStuff();
Vector results = datenbankauslesen();
defaultTableModel.setDataVector(results,Spaltenbezeichnung);
defaultTableModel.fireTableDataChanged();
table.setEnabled(false);
DefaultTableCellRenderer ren = new DefaultTableCellRenderer();
ren.setHorizontalAlignment(DefaultTableCellRenderer.CENTER);
DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
renderer.setHorizontalAlignment(DefaultTableCellRenderer.LEFT);
table.setShowGrid(true);
table.setColumnSelectionAllowed(true);
table.setFocusable(false);
table.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
table.sizeColumnsToFit(true);
table.setBounds(new java.awt.Rectangle(0, 0, 0, 0));
table.getColumnModel().getColumn(0).setPreferredWidth(150);
table.getColumnModel().getColumn(1).setPreferredWidth(370);
table.getColumnModel().getColumn(2).setPreferredWidth(120);
table.getColumnModel().getColumn(3).setPreferredWidth(120);
table.getColumnModel().getColumn(4).setPreferredWidth(120);
table.getColumnModel().getColumn(5).setPreferredWidth(120);
table.getColumnModel().getColumn(6).setPreferredWidth(30);
table.setComponentOrientation(java.awt.ComponentOrientation.LEFT_TO_RIGHT);
/*table.getColumnModel().getColumn(0).setHeaderRenderer(renderer);
table.getColumnModel().getColumn(1).setHeaderRenderer(renderer);*/
table.getColumnModel().getColumn(2).setCellRenderer(ren);
table.getColumnModel().getColumn(3).setCellRenderer(ren);
table.getColumnModel().getColumn(4).setCellRenderer(ren);
table.getColumnModel().getColumn(5).setCellRenderer(ren);
table.getColumnModel().getColumn(6).setCellRenderer(ren);
jScrollPane = new JScrollPane(table);
jScrollPane.setBounds(new java.awt.Rectangle(29, 168, 618, 481));
jScrollPane.setViewportView(table);
}
return jScrollPane;
Soweit klappt hier alles noch ganz gut. Der Benutzer kann von selbst nicht die Spaltenbreite änderen. Und die Spalten werden auch in der gewünschten Größe angezeigt.
In meiner Anwendung wird per Button-Druck ein neuer Datensatz in die Datenbank geschrieben und gleichzeitig wird dieser dann in der JTable ausgegeben und da krachts.
Die Daten werden zwar angezeigt, jedoch werden die Spaltenbreiten nicht übernommen! Alle Spalten sind wieder gleich groß!
Code:
initDatabaseStuff(); //Datenbank verbinden
datenbankUpdate(); //Datensatz update und schließen
initDatabaseStuff(); //Datenbank wieder öffnen
Vector results = datenbankauslesen(); //Datensätze auslesen und schließen
defaultTableModel.setDataVector(results,Spaltenbezeichnung);
defaultTableModel.fireTableDataChanged();
Hat vielleicht jemand eine Idee an was das liegen kann, bzw. was ich evtl. in der Buttonmethode nicht berücksichtigt habe?
Grüße