Zum Inhalt springen

JTable Datensätze aktualisieren


T1m

Empfohlene Beiträge

Guten Morgen,

ich bin ein Programm am Schreiben, in dem unter andern eine Tabelle erstellt und angezeigt werden soll.

Die Tabelle soll kein Meisterwerk werden, sondern ganz simple Daten aus einem 2D-Array anzeigen.

Mein Problem ist es nun, dass wenn die Daten im 2D-Array geändert werden, die Datensätze sich in der JTable nicht ändern.

Ich hänge jetzt seit ein paar Tagen an dem Problem fest und finde einfach keine Lösung.

Hier ist mein Quellcode.


import java.awt.BorderLayout;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;


import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.ListSelectionModel;

import javax.swing.event.ListSelectionEvent;

import javax.swing.event.ListSelectionListener;

import javax.swing.event.TableModelEvent;

import javax.swing.event.TableModelListener;

import javax.swing.table.DefaultTableModel;

import javax.swing.table.TableModel;


public class BeispielTabelle extends JFrame {


	ResultSet rsTrefferliste;

	ResultSetMetaData rsmdTrefferliste;

	int zeilenAnzahl;

	int spaltenAnzahl;


	String[][] resultArray;

	String[] spaltenArray;


	DefaultTableModel dtm;


	JTable table = new JTable();


	public BeispielTabelle() {


		setTable();

	}


	public void setTable() {

		setTitle("BeispielTabelle");

		setSize(500, 500);

		setLocationRelativeTo(null);

		setResizable(false);

		setVisible(false);

	}


	public void createTable() {


		dtm = new DefaultTableModel(resultArray, spaltenArray);

		table.setModel(dtm);


		add(new JScrollPane(table), BorderLayout.CENTER);

	}


	public void fillTrefferliste(ResultSet result) {

		rsTrefferliste = result;


		try {


			rsmdTrefferliste = rsTrefferliste.getMetaData();


			// Spaltenanzahl

			spaltenAnzahl = rsmdTrefferliste.getColumnCount();


			// Zeilenanzahl

			rsTrefferliste.last();

			zeilenAnzahl = rsTrefferliste.getRow();

			rsTrefferliste.beforeFirst();


			resultArray = new String[zeilenAnzahl][spaltenAnzahl];

			spaltenArray = new String[spaltenAnzahl];


			while (rsTrefferliste.next()) {


				for (int i = 0; i < zeilenAnzahl; i++) {

					for (int j = 0; j < spaltenAnzahl; j++) {

						resultArray[i][j] = rsTrefferliste.getString(j + 1);

					}

				}


				for (int j = 0; j < spaltenAnzahl; j++) {


					spaltenArray[j] = rsmdTrefferliste.getColumnLabel(j + 1);

				}

			}


		} catch (SQLException e) {

			e.printStackTrace();


		}

	}

}

Ich würde mich sehr über Hilfe freuen.

Mit freundlichen Grüßen,

T1m

Link zu diesem Kommentar
Auf anderen Seiten teilen

Gast KnapsackSolver

Hallo T1m,

wenn ich das richtig verstehe funktioniert eigentlich alles oder ?

Das bedeutet, deine Daten werden bei erstmaligem Anzeigen auch in der Tabelle visualisiert. Ändert sich nachfolgend das Array, werden diese Änderungen nicht mehr aktualisiert ?

Dann musst du einfach das ganze Neu zeichnen. Also das Table-Model referenziert ja bereits dann auf deine Daten. Werden nun Daten im Array gespeichert muss sich auch zwingen die Tabele neu generieren.

Dazu musst du dann also lediglich das ganze neu zeichnen (Also Revalidate, Repaint oder so)

Hoffe ich hab dein Problem richtig erfasst ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Guten Tag SakulRelda,

ja du hast mein Problem richtig verstanden und du hast auch recht damit, dass ich nur mit der Repaint() -Funktion alles neu zeichnen muss. Ich habe anscheinend den Wald vor lauter Bäumen nicht mehr gesehen. :D

Vielen Dank für deine Hilfe. :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...