Zum Inhalt springen

JTable Datensätze aktualisieren


Empfohlene Beiträge

Geschrieben

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

Gast KnapsackSolver
Geschrieben

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 ;)

Geschrieben

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. :)

Gast KnapsackSolver
Geschrieben

Na dann viel Spaß und weiter viel Erfolg ;)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...