Zelle aus jTable in jTextfield schreiben

Alles was mit Swing und AWT zu tun hat

Moderatoren: wegus, Olek77

Antworten
Tom8591
Beiträge: 1
Registriert: 21.06.2012, 18:57

Zelle aus jTable in jTextfield schreiben

Beitrag von Tom8591 » 21.06.2012, 19:06

Hey Leute,
habe ein kleines Problem, bei dem ich schon seit ner kleinen Ewigkeit nicht mehr weiterkomme :roll:

Und zwar hab ich eine jTable die der Benutzer mit Daten füllen kann (Spalten der Tabelle: Titel, Genre, Erscheinungsdatum,...)

Dann kann der Benutzer eine Zeile auswählen und auf den Button "Ändern" klicken und kommt in ein neues Fenster mit 7 jTextFields (wegen den 7 Spalten).
Nun möchte ich die Felder der Tabelle in die TextFields reinkriegen, jedoch bekomm ich das leider nicht auf die Reihe.
Es soll zum Beispiel die dritte Zeile der Tabelle, erstes Spalte in das erste jTextfields rein. Also ich will eine komplette Zeile nehmen und jeden Inhalt jeweils in ein eigenes Textfeld.

Bisher bin ich so weit gekommen, jedoch funktionierts nicht wenn ich mein Programm laufen lasse.

Code: Alles auswählen

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

        //Die Daten der ausgewählten Reihe speichern!
        //Die Tabelle befindet sich in einem anderen Fenster namens "Buchanzeigen"
        int rowindex = Buchanzeigen.jTable1.getSelectedRow();           
        Object[] daten = new Object[7];
        
        for(int i = 0; i < 7; i++){
                daten[i] = Buchanzeigen.jTable1.getValueAt(rowindex, i);    
        }
        
        
        //Anzeigen der Daten der ausgewählten Reihe
        jTextField1.setText(daten[0].toString());
        jTextField2.setText(daten[1].toString());
        jTextField3.setText(daten[2].toString());
        jTextField4.setText(daten[3].toString());
        jTextField5.setText(daten[4].toString());
        jTextField6.setText(daten[5].toString());
        jTextField7.setText(daten[6].toString());
    }
Hat jemand nen Vorschlag?! :lol:

ebaumann
Beiträge: 288
Registriert: 22.01.2009, 08:53
Wohnort: Würzburg
Kontaktdaten:

Re: Zelle aus jTable in jTextfield schreiben

Beitrag von ebaumann » 22.06.2012, 07:39

JTable stellt die Daten eines TableModel dar, dies ist zu modifizieren. Für den Anfang kannst du ein DefaultTableModel benutzen. Wird das TableModel modifiziert, benachrichtigt es die JTable, diese stellt es aktualisiert dar. Hier eine Einführung. Zum Ändern der richtigen Model-Zeile solltest du JTable#convertRowIndexToModel() aufrufen, denn JTables können sortiert und gefiltert werden, dabei ist die Zeilenreihenfolge/-Anzahl nicht zwangsweise jene des Models. Umgekehrt gibt es JTable#convertRowIndexToView().

Falls du es noch einfacher willst - abgesehen von der Einarbeitungszeit - benutzt du Beans Binding, das der GUI-Editor Matisse unterstützt, um das TableModel brauchst du dich dann nicht zu kümmern, ebenfalls nicht um Benachrichtigungen/Aktualisierungen. Beim Beans Binding benutzt du einfach eine List mit den zu modifizierenden Objekten. Eine Tabellenzeile stellt ein Objekt der List dar. Tabellenspalten stellen die Rückgaben der Getter dieser Objekte dar, z.B. Klasse#getGenre(). Dabei lassen sich die Zellen in der Tabelle bearbeiten und die unterliegenden Objekte werden automatisch aktualisiert. Wird z.B. in der 3. Zeile Text in die Genre-Spalte getippt, sorgt Beans Binding dafür, dass automatisch z.B. #setGenre(Zellinhalt) des unterliegenden Objekts aufgerufen wird. Haben die unterliegenden Objekte PropertyChangeSupport, geht es auch umgekehrt: Rufst du bei einem Objekt setGenre("Neues Genre") auf, ändert sich automatisch die Anzeige in der Tabelle.

Ich kenne leider kein Beans Binding Tutorial, ich musste alles aus vielen Quellen im Web zusammensuchen.

Antworten