jTable befüllen mit dynamischem Inhalt

D

Davis99712

Gast
Hallo liebe Community,
ich bin ein Java Neuling, arbeite mit NetBeans (7.0) und habe mir eine FrameForm mit einer jTable geklickt. Folgenden Code nutze ich, um die Datenbankverbindung zur PostgreSQL Datenbank (connector ist eingebunden) zu öffnen und Daten abzufragen - diese werden dann in der Kommandozeile ausgegeben:

Java:
System.out.println("Checking if Driver is registered with DriverManager.");
  
  try {
    Class.forName("org.postgresql.Driver");
  } catch (ClassNotFoundException cnfe) {
    System.out.println("Couldn't find the driver!");
    System.out.println("Let's print a stack trace, and exit.");
    cnfe.printStackTrace();
    System.exit(1);
  }
  
  System.out.println("Registered the driver ok, so let's make a connection.");
  
  Connection c = null;
  
  try {
    // The second and third arguments are the username and password,
    // respectively. They should be whatever is necessary to connect
    // to the database.
    c = DriverManager.getConnection("jdbc:postgresql://192.168.1.4/testdatabase",
                                    "testuser", "testpassword");
  } catch (SQLException se) {
    System.out.println("Couldn't connect: print out a stack trace and exit.");
    se.printStackTrace();
    System.exit(1);
  }
  
  if (c != null)
    System.out.println("Hooray! We connected to the database!");
  else
    System.out.println("We should never get here.");
 
  
  
  
  try
    {
      Statement statement = c.createStatement ();
 
      ResultSet resultSet = statement.executeQuery ("select * from aufgaben");
 
      ResultSetMetaData resultSetMetaData = resultSet.getMetaData ();
 
      System.out.println ("\n\nshow data from table: 'aufgaben'\n");
 
      String format = "%35s   %-6s   %10s   %s\n  %s\n  %s\n  %s\n";
 
      
      
            
       
       
      System.out.printf (format + "\n",
                         resultSetMetaData.getColumnLabel (1),
                         resultSetMetaData.getColumnLabel (2),
                         resultSetMetaData.getColumnLabel (3),
                         resultSetMetaData.getColumnLabel (4),
                         resultSetMetaData.getColumnLabel (5),
                         resultSetMetaData.getColumnLabel (6),
                         resultSetMetaData.getColumnLabel (7));
 
     
      
      while (resultSet.next ())
      {
        System.out.printf (format,
                           resultSet.getString (1),
                           resultSet.getString (2),
                           resultSet.getString (3),
                           resultSet.getString (4),
                           resultSet.getString (5),
                           resultSet.getString (6),
                           resultSet.getString (7));
      }
 
      resultSet.close ();
      statement.close ();
    }
    catch (SQLException e)
    {
      e.printStackTrace ();
      System.exit (1);
    }


Verbindung - OK
Daten abrufen - OK
Daten in Kommandozeile ausgaben - OK
Wie sorge ich dafür, dass die jTable diese Inhalte zeigt?
Ich möchte später eine GUI haben und keine Kommandozeile mehr - kennt sich da jemand mit aus?
 
C

Camino

Gast
Alles kein Problem. Anwendung mit Swing erstellen. Dort eine JTable rein. Ein TableModel dran. Eine Datenklasse erstellen, dann für jeden Datensatz ein Objekt erstellen und dies in einer ArrayList sammeln. Diese ArrayList ins Model, welche die Tabelle aktualisiert. Daten einfügen, ändern oder löschen dann immer über das Model und die Tabelle passt sich dann an.
 

c_sidi90

Top Contributor
Ein ähnlicher Lösungsweg:

Frage vor dem Laden in den Table die Anzahl an Datensätzen ab und erstelle ein Object [][] Array, die Größe ist die Anzahl an gefilterten Datensätzen. Desweiteren erzeugst du ein String[]Array für die Spaltennamen, diese kannst du ja aus deiner SQL Abfrage filtern und übergeben, sofern die Spaltennamen immer gleich sind, kannst du es gleich als static deklarieren.

Nun füllst du innerhalb einer geschachtelten For-Schleife das Object Array, erzeugst ein DefaultTableModel welchem du beide Arrays übergibst und setzt table.setModel(deinErzeugtesModel).

Lg
 
D

Davis99712

Gast
Danke erstmal für eure schnelle Hilfe.

Anwendung mit Swing erstellen. Dort eine JTable rein.
Das ist kein Problem - hab ich gemacht


Ein TableModel dran.
Wo finde ich das bei Netbeans 7.0?

Eine Datenklasse erstellen, dann für jeden Datensatz ein Objekt erstellen und dies in einer ArrayList sammeln.
Hier stehe ich jetzt ganz auf dem Schlauch^^



Wie gesagt - ich bin seit knapp 73 Stunden mit Java zu gange und habe vorher mit VB.NET und Visual Studio gearbeitet - da lief 80% über GUI und 20% über Quelltext
Ich glaube mittlerweile mitbekommen zu haben, dass das bei Java eher andersrum läuft.
Könnt Ihr mir ein Codebeispiel bezogen auf meinen Code oben geben oder ein Tutorial, welches mir das erklärt, was ich wissen muss?


1000 Dank für eure Hilfe

MfG
Nadine
 
C

Camino

Gast
Zur JTable gibt es hier ein gutes Tutorial:
http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/4841-jtable-ubersicht-teil-1-teil-8-a.html

Du musst halt irgendwie deine Daten aus der Datenbank in die Tabelle bekommen. Und das funktioniert am besten über ein TableModel. Das kannst du beim Erstellen der Tabelle mit übergeben:
Code:
JTable tabelle = new JTable(tableModel)
oder später zuweisen:
Code:
tabelle.setModel(tableModel)
. Je nachdem, wie deine Daten aus der Datenbank strukturiert sind, musst du dir überlegen, wie dein TableModel und die Datenstruktur aufgebaut sind, in denen du die Daten speicherst.
 
Zuletzt bearbeitet von einem Moderator:

c_sidi90

Top Contributor
Hab es zwar jetzt nicht getestet, aber das sollte dich auf die Idee bringen, dein Vorhaben umzusetzen. So könnte man es angehen.

Java:
//JPanel erzeugen und JTable einbetten.
	JTable table = new JTable();
	JPanel panel = new JPanel(table);
	Object[][] data = null;
	//Wenn die Spaltennamen immer gleich sind, kannst du diese schon vorher festlegen
	String [] columnNames = {"Col1", "Col2"};
	
	 Statement statement = conn.createStatement();
	 ResultSet result = statement.executeQuery(deineSQLAbfrage);
	 ResultSetMetaData rsMetaData = result.getMetaData();
	 rowCount = rsMetaData.getRowCount();
	 //DatenArray erzeugen mit maxIndex of max rowCount in SQLTable
	 data = new Object[rowCount][rowCount];

	 //Iterier durch die Spalten des Tables
	 for(int i=0; i<columns.length;i++){
		 
		 //Für jede spalte, gehe jede Zeile durch und speicher sie im Datenarray
		 for(int j=0; j<data.length;j++){
			 
			 data[i][j] = result.getString(j);
		 }
	 }
	
	 //Erzeuge ein Tablemodel und übergeben die beiden Arrays
	 TableModel model = new DefaultTableModel(data,columnNames);
	 table.setModel(model);
 
D

Davis99712

Gast
Hi,
erstmal danke erneut für eure Hilfe.

Muss ich noch irgendwas importieren?
Habe jetzt den Codeschnipsel an meinen Code angepasst - habe aber Fehlermeldungen, die nicht gehen wollen :(

Java Fehlermeldungen


Danke

LG
Nadine
 

Michael...

Top Contributor
Hab gerade im ersten Post was von NetBeans gelesen. Benutz ich zwar nicht, aber da wird es wohl eine Funktion zum automatischen Importieren fehlender Klassen geben?!
 

c_sidi90

Top Contributor
Sorry, richtig ich habe die Variablennamen nicht immer richtig übernommen, hatte es ebend im Editor gecoded, da ist es mir nicht aufgefallen. Das sollte auch keine konkrete Lösung sein, sondern nur ein Ansatz wie man vorgeht.

Du musst die fehlenden Swingklassen importieren, die rowCount Variable mit int deklarieren und columns in columnNames umschreiben.

lg
 
D

Davis99712

Gast
Ich tippe mal, dass Ihr euch wahrscheinlich nach meinem letzten Post beömmelt habt vor lachen :p
Sind glaub ich alles Basic-Anfängerfragen - aber selbst ist die Frau :)
Ich lerne ja auch alles, was ich hier erfahre um beim nächsten mal schlauer zu sein ;)


Mein Code sieht jetzt so aus:

Java:
//JPanel erzeugen und JTable einbetten.
    int rowCount;
    JPanel panel = new JPanel(jTable1);
    Object[][] data = null;
    //Wenn die Spaltennamen immer gleich sind, kannst du diese schon vorher festlegen
    String [] columnNames = {"Col1", "Col2"};
    
     Statement statement = c.createStatement();
     ResultSet result = statement.executeQuery("select * from aufgaben");
     ResultSetMetaData rsMetaData = result.getMetaData();
     rowCount = rsMetaData.getRowCount();
     //DatenArray erzeugen mit maxIndex of max rowCount in SQLTable
     data = new Object[rowCount][rowCount];
 
     //Iterier durch die Spalten des Tables
     for(int i=0; i<columnNames.length;i++){
         
         //Für jede spalte, gehe jede Zeile durch und speicher sie im Datenarray
         for(int j=0; j<data.length;j++){
             
             data[i][j] = result.getString(j);
         }
     }
    
     //Erzeuge ein Tablemodel und übergeben die beiden Arrays
     TableModel model = new DefaultTableModel(data,columnNames);
     jTable1.setModel(model);


Ich erhalte jetzt noch 2 "Fehler":

1. Die Zeile
Java:
JPanel panel = new JPanel(jTable1);
markert er mir an.

2. den Begriff getRowCount bei
Java:
rowCount = rsMetaData.getRowCount();
will er auch nicht haben - getColumnCount kennt er - ist aber wahrscheinlich nicht das, was es sein soll (zumindest kenne ich den Unterschied zwischen row und column^^)


Die anderen Fehler habe ich bei NetBeans mit "FixImports" beheben können, rowCount als int deklariert und columns in columnNames abgeändert.

Hab ich wieder was vergessen?


Danke nochmals für eure Hilfe :)

Ganz liebe Grüße
Nadine
 
C

Camino

Gast
Ich erhalte jetzt noch 2 "Fehler":

1. Die Zeile
Java:
JPanel panel = new JPanel(jTable1);
markert er mir an.

Wird dir denn da nicht angezeigt, was falsch ist? Bei Eclipse gibt es meistens auch Infos, was für ein Fehler vorliegt, und dann meistens auch noch dazu direkte Möglichkeiten, wie sich diese Fehler beheben lassen.
Du musst dir vom JPanel mal die vorgegebenen Konstruktoren anschauen. Da gibt es wohl keinen, bei dem du eine Tabelle übergeben kannst. Eine Tabelle musst du anders zum Panel hinzufügen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Compiler-Fehler JTable mit XML befüllen | The constructor JTable(Object[], String[]) is undefined Java Basics - Anfänger-Themen 10
M JTable mit XML datei befüllen Java Basics - Anfänger-Themen 1
S JTable LinkedList <Objekt> befüllen Java Basics - Anfänger-Themen 1
G JTable Zeilen befüllen Java Basics - Anfänger-Themen 2
M JTable befüllen Java Basics - Anfänger-Themen 3
richis-fragen JTable den angezeigten WERT nicht den Wert aus dem Model ausgeben. Java Basics - Anfänger-Themen 3
richis-fragen JTable Header ausgeblendete (width = 0) nicht per mouseDragged aufziehen. Java Basics - Anfänger-Themen 9
richis-fragen JTable sowohl Spaltennamen wie auch Spaltenbeschriftungen Java Basics - Anfänger-Themen 7
richis-fragen JTable effektiv angezeigter Text ausgeben nicht Inhalt vom Model Java Basics - Anfänger-Themen 9
G JTable Listselectionlistener friert das Programm ein Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
W Liste mit Listen in JTable darstellen Java Basics - Anfänger-Themen 1
J Zelleninhalt einer Jtable löschen Java Basics - Anfänger-Themen 2
E JTable einzelne Zelle färben Java Basics - Anfänger-Themen 2
thobren jtable arraylist Java Basics - Anfänger-Themen 12
thobren JTable Icon Java Basics - Anfänger-Themen 1
H Kapselung JProgressBar in JTable, aber getValueAt() greift nicht Java Basics - Anfänger-Themen 7
G JTable, Zeile auswählen und Ergebnis an Schaltfläche übergeben Java Basics - Anfänger-Themen 4
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
J JTable Spalteninhalt löschen Java Basics - Anfänger-Themen 1
J JTable Titel wird nicht angezeigt Java Basics - Anfänger-Themen 6
B jTable Spalte summieren Java Basics - Anfänger-Themen 7
N JTable auslesen Java Basics - Anfänger-Themen 6
O JTable in Excel mit Farben Java Basics - Anfänger-Themen 8
O Kommentar auf JTable Zelle Java Basics - Anfänger-Themen 2
M Jtable Reenderer Java Basics - Anfänger-Themen 0
O Popoup Menü im JTable richtig anzeigen Java Basics - Anfänger-Themen 6
M Jtable änderung updaten Java Basics - Anfänger-Themen 2
O JTable Suchfunktion Java Basics - Anfänger-Themen 2
M jTable bekommt null Java Basics - Anfänger-Themen 1
M JTable an andere Klasse übergeben Java Basics - Anfänger-Themen 2
M Datenbank in jTable Laden Java Basics - Anfänger-Themen 49
M Klasse in JTable einfügen Java Basics - Anfänger-Themen 7
S JTable Java Basics - Anfänger-Themen 16
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L JTable Tagebuch Spaltenhöhe verändern Java Basics - Anfänger-Themen 3
S JTable - Filter an anderen Colums Java Basics - Anfänger-Themen 2
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
C JTable update mit MySQL Datenbank Java Basics - Anfänger-Themen 1
C Best Practice JTable in MVC Pattern Java Basics - Anfänger-Themen 7
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
A zykl. Aktualisierne JTable Java Basics - Anfänger-Themen 9
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
C Werte aus JTable auslesen Java Basics - Anfänger-Themen 4
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
V JTable welcher Listener ? Java Basics - Anfänger-Themen 7
D Falsche Zeile wird in JTable gelöscht Java Basics - Anfänger-Themen 6
D MySQL Abfrage in JTable speichern Java Basics - Anfänger-Themen 43
D JTable Zeile wird nicht in MySQL gelöscht Java Basics - Anfänger-Themen 16
D JTable Zeilen löschen Java Basics - Anfänger-Themen 5
C Klassen JTable wird ohne Header aufgebaut Java Basics - Anfänger-Themen 6
K (JTable) Text einer Zelle auf der linken Seite kürzel Java Basics - Anfänger-Themen 2
B Kniffel JTable Java Basics - Anfänger-Themen 5
N JTable flackert Java Basics - Anfänger-Themen 8
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
J ArrayList wird in JTable falsch angezeigt Java Basics - Anfänger-Themen 0
J Eintragen von Personen in JTable Java Basics - Anfänger-Themen 4
X JTable mit grünen und roten Punkten Java Basics - Anfänger-Themen 2
LexeB4F DEL --> JTable Zelleninhalt Java Basics - Anfänger-Themen 3
R JTable Auslesen Java Basics - Anfänger-Themen 1
Crazynet jTable erste Zeile mit deffinierten Werten Java Basics - Anfänger-Themen 0
K Collections Sortieren nach zweiter Spalte in JTable Java Basics - Anfänger-Themen 18
J JTable Wert gleich überschreiben Java Basics - Anfänger-Themen 6
S Zeile entfernen aus JTable Java Basics - Anfänger-Themen 15
S JTable clonen Java Basics - Anfänger-Themen 5
H Best Practice PDF JTable Java Basics - Anfänger-Themen 4
S In JTable Zeile selektieren mit Mausklick Java Basics - Anfänger-Themen 16
D JTable Probleme beim Sortieren von Zahlen. Java Basics - Anfänger-Themen 6
F Zeile bei JTable hinzufügen Java Basics - Anfänger-Themen 6
K JTable Bild einfügen Java Basics - Anfänger-Themen 1
M [JTable] getValue throws ArrayOutOfBoundException Java Basics - Anfänger-Themen 1
B JTable - Highlighter ??? Java Basics - Anfänger-Themen 3
S JTable dynamisch mit Datenbankinhalten füllen Java Basics - Anfänger-Themen 6
W JTable mit einem JButton-Array füllen Java Basics - Anfänger-Themen 4
O JScrollPane zu gross für JTable Java Basics - Anfänger-Themen 2
L JTable Row selected -> fireTableDataChange do nothing. Java Basics - Anfänger-Themen 3
E JTable + TableModel updaten? Java Basics - Anfänger-Themen 1
O java.lang.IndexOutOfBoundsException JTable autoSort Java Basics - Anfänger-Themen 5
F JTable adding Row Java Basics - Anfänger-Themen 5
P jTable getColumnClass, mit unterschiedlichen Klassen in einer Column? Java Basics - Anfänger-Themen 5
M Eingabe in JTable bei Eingabe korrigieren Java Basics - Anfänger-Themen 2
Z jtable problem (das tausendste??) Java Basics - Anfänger-Themen 12
J JTable Java Basics - Anfänger-Themen 7
T JTable Java Basics - Anfänger-Themen 2
T JTable einzelne Zeilen löschen Java Basics - Anfänger-Themen 3
S Farbe eine Zeile in JTable ändern, wenn JButton geklickt wurd Java Basics - Anfänger-Themen 4
Uzi21 jTable / Inhalt speichern Java Basics - Anfänger-Themen 2
M Problem mit JTable und Model Java Basics - Anfänger-Themen 3
F Methoden JTable + 2 For-Schleifen Java Basics - Anfänger-Themen 4
C jtextfield und jtable Java Basics - Anfänger-Themen 34
X JTable mit Inhalten aus JTextField o.ä. füllen Java Basics - Anfänger-Themen 4
G JTable: SelectionListener Problem Java Basics - Anfänger-Themen 2
G JTable: Werte in Tabelle direkt ansprechen Java Basics - Anfänger-Themen 3
S Icons in JTable per ResultSet Java Basics - Anfänger-Themen 5
G Spalte in JTable unsichtbar machen, Zugriff auf Daten ermöglichen Java Basics - Anfänger-Themen 2
M Zelle von JTable mit Rahmen versehen Java Basics - Anfänger-Themen 4
G JTable: Inhalt einer selektierten Zeile speichern Java Basics - Anfänger-Themen 2
G JTable: mehrzeilige Zellen erstellen Java Basics - Anfänger-Themen 2
W Problem JTable Java Basics - Anfänger-Themen 5
M JTable wird nicht aktualisiert Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben