jTable - Einträge verändern

gavanaa

Mitglied
Folegnedes Probelm mit der JTable:

habe folgende Tabelle in mein Programm implementiert.
Nun hab ich aber noch ein Vektor des Typs "daten(String, String,String,String,String)", dessen Inhalt ich gerne auf die Tabelle übertragen lassen möchte (der Vektor verändert sich im Programmverlauf, von daher muss die Tabelle auch immer wieder erneuert werden).
Die einzelnen Daten des Vektors auszulesen stellt kein problem dar. Ich verzweifele nur gerade daran, wie ich schlicht und einfach in der Tabelle eine neue Reihe mit neuem Inhalt erstellen.

Eine andere Sache ist, wie ich z.B. eine bestimmte Reihe auswählen um sie dann auf Knopfdruck zu löschen oder deren Inhalt ändern.

Java:
  class MyTableModel extends AbstractTableModel {
        private String[] spaltenName = {"Nachname und Vorname",
        "Telefonnummer",
        "Kundennummer",
        "Geburtsdatum",
        "Video ausgeliehen?"};
        
//       daten neuerEintrag0 = einträge.get(0);

       
                   
       private Object[][] data = {
                        
           {"Test person 1", "06841-63183", "001", new String(), new Boolean(false)},
           {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)},
           {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)},
           {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)},
           {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)},
           {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)},

            
        };
        
        public int getColumnCount() {
            return spaltenName.length;
        }
        
        public int getRowCount() {
            return data.length;
        }
        
        public String getColumnName(int spalte) {
            return spaltenName[spalte];
        }
        public Object getValueAt(int reihe, int spalte) {
            return data[reihe][spalte];
        }
        
        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }
        
        /*
         * Hierdurch soll man in Zukunft Änderungen direkt an der Tabelle vor-
         * nehmen können.
         */
        public boolean isCellEditable(int reihe, int spalte) {
            //Note that the data/cell address is constant,
            //no matter where the cell appears onscreen.
            if (spalte < 2) {
                return false;
            } else {
                return true;
            }
        }
        
        /*
         * Daten werden verändert
         */
        public void setValueAt(Object value, int reihe, int spalte) {
            if (DEBUG) {
                System.out.println("Setze Wert bei " + reihe + "," + spalte
                        + " auf " + value
                        + " (eine Instanz von "
                        + value.getClass() + ")");
            }
            
            data[reihe][spalte] = value;
            fireTableCellUpdated(reihe, spalte);
            
                }
        }
        
      
    }
 
Zuletzt bearbeitet:
Moin,
wirf mal einen Blick in die API bzgl JTable und TableModel, Stichwort addRow, deleteRow und getSelectedRow (o.ä.)
Prinzipiell empfehle ich jedoch wie immer für eine flexible Tabelle die Verwendung eines TableModels. Aufgrund Deines Zeitdrucks würde ich es erst einmal ohne angehen. Aber fürs nächste Mal solltest Du ernsthaft darüber nachdenken, vor allem auch über die Datenhaltung. In Beispielen (Uni, Bücher,..) werden immer wieder zweidimensionale Arrays verwendet, davon kann ich nur abraten. Das ist umständlich und unflexibel. Ich hoffe nur, dass die Autoren und Dozenten die zweidimensionalen Arrays nur aus Bequemlichkeit in ihren Beispielen verwenden, um andere Sachverhalte zu demonstrieren.
 
Snape hat gesagt.:
Moin,
wirf mal einen Blick in die API bzgl JTable und TableModel, Stichwort addRow, deleteRow und getSelectedRow (o.ä.)
Prinzipiell empfehle ich jedoch wie immer für eine flexible Tabelle die Verwendung eines TableModels. Aufgrund Deines Zeitdrucks würde ich es erst einmal ohne angehen. Aber fürs nächste Mal solltest Du ernsthaft darüber nachdenken, vor allem auch über die Datenhaltung. In Beispielen (Uni, Bücher,..) werden immer wieder zweidimensionale Arrays verwendet, davon kann ich nur abraten. Das ist umständlich und unflexibel. Ich hoffe nur, dass die Autoren und Dozenten die zweidimensionalen Arrays nur aus Bequemlichkeit in ihren Beispielen verwenden, um andere Sachverhalte zu demonstrieren.

Vielen Dank für die Antwort. Hab es jetzt mal auf die schnelle ein wenig anders gemacht, ist zwar nicht so schön geworden, erfüllt aber seinen Zweck ;).
Demnächst werd ich mich mal ordentlicher damit befassen... dann aber in ruhe... ;)
 
Zurück