JTABLE - Daten in Felder übergeben nach Sortierung

Alles was mit Swing und AWT zu tun hat

Moderatoren: wegus, Olek77

Antworten
MarcAber

JTABLE - Daten in Felder übergeben nach Sortierung

Beitrag von MarcAber » 27.01.2017, 15:55

Hallo zusammen. Ich habe mir folgendes zusammengestümpert:

Code: Alles auswählen

        int row = table_funktion.getSelectedRow();
       
        String TableFunktion_click = (table_funktion.getModel().getValueAt(row, 0).toString());
        try{
                String sql  =   "SELECT id, name, vorname, strasse FROM Menschen WHERE id = '"+TableFunktion_click+"' ;
                logger.info("Ausgewählter Wert fuer TableClick: "+TableFunktion_click); // bringt mir nur ne Ausgabe ins Log was ich da erwischt hab

                pst     =   conn.prepareStatement(sql);
                rs      =   pst.executeQuery();

                if(rs.next()){
                    String add1 = rs.getString("id");
                    String add2 = rs.getString("name");
                    String add3 = rs.getString("vorname");
                    String add4 = rs.getString("strasse");
                    
                    txt_dbeintrag_id.setText(add1);
                    txt_dbeintrag_name.setText(add2);
                    txt_dbeintrag_vorname.setText(add3);
                    txt_dbeintrag_strasse.setText(add4");
        }
        }
        catch(Exception e){ logger.error(e);
            JOptionPane.showMessageDialog(null, e);
        }
Die Idee... Ich habe eine tabelle mit 10 eintraegen. diese lasse ich in einer jtable anzeigen und wenn ich eine zeile anklicke, dann bekomme ich meine ausgewaehlten daten ueber die funktion TableFunktion_click schön brav in die felder geschubst. Alles gut soweit. Schalte ich jetzt aber den AutoCreateRowSorter in den Eigenschaften der jtable dazu, dann passiert zwar auf den ersten blick genau das was passieren soll.... aaaaber
die ausgewaehlten daten veraendern sich nicht von der reihenfolge.

ich hab also bei der standard sortierung id1, id2, id3.... jetzt sortiere ich nach namen udn bekomme die zeilen angezeigt wie sie auch umsortiert aussehen sollten. sprich, es steht in der reihenfolge id4,id2,id1,id5,... klicke ich jetzt aber die erste zeile an, um den datensatz auszuwaehlen, steht in meinen feldern der inhalt von id1. beim 2. eben id2 und so weiter. also rein optisch sortiert er mir das schoen brav, intern ruft er mir aber die alte reihenfolge auf.

entweder ich waehle nicht die richtige zelle aus, die mir den inhalt liefert der tatsaechlich dahinter stehen soll oder aber ich hab n denkfehler beim zusammenbau des sql strings.

hat jemand ne lösung? oder ist die funktion autocreaterowsorter einfach nur total ungeeignet in verbindung mit datenbanken? wie würdet ihr das lösen?

danke im voraus.
gruss
marc

Benutzeravatar
Tux1000
Beiträge: 264
Registriert: 05.04.2008, 16:09

Re: JTABLE - Daten in Felder übergeben nach Sortierung

Beitrag von Tux1000 » 29.01.2017, 09:56

Hallo,
da bei einem sortieren der JTable nur die Anzeige sortiert wird und nicht das Model, du die Werte aber aus dem Model ziehst, musst du dir den korrekten Index holen und mit diesem die Werte. Dazu schau dir mal die Methoden an:
http://docs.oracle.com/javase/8/docs/ap ... oView-int-
http://docs.oracle.com/javase/8/docs/ap ... Model-int-
Der RowSorter funktioniert einwandfrei mit Datenbanken :D Ein eigenes TableModel ist manchmal ganz gut.
Viele Grüße

Antworten