Ergebnisvektor aus DB Abfrage in JTable anzeigen

  • Themenstarter Themenstarter Seba
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
S

Seba

Gast
Hallo,

Zu meinem Problem:

Ich habe eine GUI Klasse gebastelt in der ich eine DatenbankTabelle nach dem klick auf einen jButton(refresh) in einem jTable anzeigen lassen will.

Die Datenbankabfrage befindet sich in einer seperaten Klasse:
Mapper Methode:

Java:
 public Vector<Person> getAll () {
     Connection con = DBConnection.connection();

     		// Ergebnisvektor vorbereiten
		Vector<Person> result = new Vector<Person>();

     try{

         Statement stmt = con.createStatement();

         ResultSet rs = stmt.executeQuery("SELECT * FROM postit ORDER BY nachname");

         
// Für jeden Eintrag im Suchergebnis wird nun ein Person-Objekt erstellt.
			while (rs.next()) {
				try {
					Person p = new PersonImpl();
					p.setId(rs.getInt("id"));
					p.setNachname(rs.getString("nachname"));
					p.setVorname(rs.getString("vorname"));
                                        p.setZip(rs.getString("zip"));
                                        p.setOrt(rs.getString("Ort"));
                                        result.add(p);


					// Hinzufügen des neuen Objekts zum Ergebnisvektor
					result.addElement(p);
				}
				catch(RemoteException ex) {
					ex.printStackTrace();
					// Bei einer evtl. Exception brechen wir die while-Schleife ab.
					break;
				}
                                //System.out.println(result.toString ());
			}
		} catch (SQLException e2) {
			e2.printStackTrace();
		}

		// Ergebnisvektor zurückgeben
		return result;

    }

Nun will ich den ausgelesenen Ergebnisverktor in meinem jTable anzeigen lassen?
Doch ich komm gerade absolut nicht drauf wie ich das umsetzen kann.

JButtonRefresh:
Java:
 private void jButtonRefreshActionPerformed(java.awt.event.ActionEvent evt) {                                         


                try {

       Person person = new PersonImpl();

        PostitVerwaltung verwaltung = new PostitVerwaltungImpl(person, PersonenMapper.personenMapper());

//Methode zum auslesen der Datenbank aufrufen

            Vector result = verwaltung.getAll();

 	    } catch (RemoteException ex) {
                Logger.getLogger(client1.class.getName()).log(Level.SEVERE, null, ex);
            }

    }

Ich hoffe einer von euch hilft mir auf die Sprünge!

Grüße
 
Zuletzt bearbeitet von einem Moderator:
hm versteh ich nicht ganz, bin noch relativ neu bei Java.
Was verstehst du nicht? ???:L
Die Frage ist eigentlich nur, wie ich den Ergebnisvektor, der mir zurück gegeben wird in dem JTable anzeigen kann.
Das steht auf der angegebenen Seite :rtfm:
Java:
BeanTableModel model = new BeanTableModel(Person.class);
JTable table = new JTable(model);
In dem Beispiel "JButtonTableModel" wird auch gezeigt, wie wir das Model mit dem Vektor füllen können:
Java:
model.addRow(one);
wobei "one" in deinem Fall jeweils ein Element des Ergebnisvektors ist, also ein Objekt vom Typ "Person".
 
Was verstehst du nicht? ???:L

Das steht auf der angegebenen Seite :rtfm:
Java:
BeanTableModel model = new BeanTableModel(Person.class);
JTable table = new JTable(model);
In dem Beispiel "JButtonTableModel" wird auch gezeigt, wie wir das Model mit dem Vektor füllen können:
Java:
model.addRow(one);
wobei "one" in deinem Fall jeweils ein Element des Ergebnisvektors ist, also ein Objekt vom Typ "Person".

So nun bin ich schon ein bisschen weiter gekommen:

Und zwar hab ich mir eine jList mit einem DefaultListModell für die Daten gemacht.

Java:
public class JListTester extends JFrame {

        public JListTester(){
//                JButton[] b = new JButton[10];
//                for(int i=0;i<10;i++)
//                        b[i]= new JButton("TestButton"+i);


                DefaultListModel dlm = new DefaultListModel();
                JList list = new JList(dlm);

                ///Elemente zum Model und der Liste adden:

                dlm.addElement("test");

                this.setSize(new Dimension(300,200));
                JScrollPane jScrollPane = new JScrollPane();
                jScrollPane.setViewportView(list);
                getContentPane().add(jScrollPane);

        }
        public static void main(String[] args) {
                JListTester lt =new JListTester();
                lt.setVisible(true);
        }
}

Weiterhin hab ich in meinem gui package noch eine Klasse erstellt, die den Ergebnisvektor bzw. das Personen Objekt abfangen soll und in einen String umwalndeln soll.

Java:
package gui;

import data.*;
import java.rmi.RemoteException;

/**
 *
 * @author Sebastian
 */
public class PersonInfo {

//    private int id;

    private String nachname;

    private String vorname;

    private String zip;

    private String ort;

    private Person p;

	public PersonInfo(Person p){
		try {
			this.p = p;
			nachname = p.getNachname();
			vorname = p.getVorname();
                        zip = p.getZip();
                        ort = p.getOrt();

		} catch (RemoteException re) {
			System.out.println("RemoteException");
			System.out.println(re);
		}
	}

    /**
     * Die String-Darstellung einer Person besteht aus Vorname und Nachname, Zip, Ort.
     */
    @Override
	public String toString() {
		return vorname + ", " + nachname + ", " + zip + ", " + ort;
	}

	public Person getPerson(){
		return p;
	}

}


Ist das bisher so korrekt? Oder hab ich da einen Denkfehler drin?

Nun musst ich nurnoch drauf kommen wie man das ganze in das DefaultListModel einfügt?
 
Zuletzt bearbeitet von einem Moderator:
So ich habs jetzt endlich gelöst:


Hier für die Zukunft noch die Lösung:

Java:
    private void jButtonRefreshActionPerformed(java.awt.event.ActionEvent evt) {                                               

        //dlm für Daten anlegen.
            
            DefaultListModel dlm = new DefaultListModel();
            jListAllePersonenAuslesen = new javax.swing.JList(dlm);

            ///Elemente zum Model und der Liste adden:

            try{
            dlm.addElement("Hier sehen Sie alle Personen, die in der DB angelegt sind:");
            //Person für den Methodenzugriff Instanziiren
            Person person = new PersonImpl();
            //Verwaltung für den Methodenzugriff Instanziiren

            PostitVerwaltung verwaltung = new PostitVerwaltungImpl(person, PersonenMapper.personenMapper());
            //Methodenaufruf
            verwaltung.getAll();

            //Die extended Loop geht durch die ArrayList (die ja die getAll() returned) und für jedes Objekt vom Typ person wird dann mit toString fomratiert und in die jList geschrieben!
            for(Person p : verwaltung.getAll())
            dlm.addElement(p.toStringAll());

            } catch (RemoteException ex) {
            Logger.getLogger(client.class.getName()).log(Level.SEVERE, null, ex);
        }


jScrollPane1.setViewportView(jListAllePersonenAuslesen);





    }
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben