Jtable wird nicht aktualisiert

sirair

Aktives Mitglied
Hallo,

habe hier ein kleines Beispiel aufgebaut, ist zwar nicht ganz sinnvoll, aber sollte erstmal vom Prinzip her stimmen. Ich bekomme die jtable nicht aktualisiert. Habe vier Klassen: Controller, Model, User, View. Der Model wird benachrichtigt, sobald sich der User geändert hat, in dem Fall sein Name. Rufe dann in der update Funktion der Klasse Model die Funktion fireTableDataChanged() auf. Allerdings wird die Table nicht aktualisiert.


Java:
import javax.swing.JFrame;

public class Controller extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public Controller() {
		setContentPane(new View());
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		pack();
		setVisible(true);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new Controller();

	}


import java.util.Observable;
import java.util.Observer;

import javax.swing.table.DefaultTableModel;

public class Model extends DefaultTableModel implements Observer {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private User u;

	public Model() {
		String[] vColumnNames = { "Name" };
		setColumnIdentifiers(vColumnNames);

		u = new User("TestUser");

		u.addObserver(this);
		addRow(new String[] { u.getName() });
	}

	// TODO Auto-generated constructor stub

	@Override
	public void update(Observable arg0, Object arg1) {
		fireTableDataChanged();
		// TODO Auto-generated method stub

	}

	public User getUser() {
		return u;
	}

import java.util.Observable;

public class User extends Observable{
	private String name;

	public User(String name) {
		this.name = name;
		// TODO Auto-generated constructor stub
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public void update(){
		setChanged();
		notifyObservers();
	}
}


import java.awt.BorderLayout;
import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class View extends JPanel {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JTable table;

	public View() {

		table = new JTable(new Model());
		JScrollPane p = new JScrollPane(table);
		add(p, BorderLayout.CENTER);

		JButton b = new JButton(ACTION_RENAME);
		b.setText("Rename");
		add(b, BorderLayout.NORTH);
		// TODO Auto-generated constructor stub
	}

	private Action ACTION_RENAME = new AbstractAction() {

		@Override
		public void actionPerformed(ActionEvent arg0) {
			((Model) table.getModel()).getUser().setName("Neuer");
			((Model) table.getModel()).getUser().update();
			// TODO Auto-generated method stub

		}
	};
}

}


}
 
S

SlaterB

Gast
was sollte denn deiner Meinung nach bei
fireTableDataChanged();
passieren?
soll das Model und die JTable den geänderten Username anzeigen?

das geht so nicht, du hast den String name vom User heraus in ein String[] kopiert/ übertragen,
Strings sind unveränderlich,
in User könnte höchstens einer String-Variablen ein neuer Wert zugewiesen werden, aber das interessiert doch andere Stellen nicht, die auf den Ursprungstring verweisen

Beispiel:
Java:
String a = "test";
String b = a;

a = "neu";
// b zeigt immer noch auf "test"

du hast drei Möglichkeiten,
1. du steckst den User oder ein anderes höheres Objekt in das Anfangs-Array für das TableModel,
ein Objekt welches geändert werden kann und dessen toString() immer den aktuellen Wert liefert
2. du baust ein intelligenteres Model, ohne Array oder Row, sondern mit überschriebener getValueAt(i,j)-Methode,
diese könnte komfortabel auf den User zugreifen und diverses von dem zurückgeben
3. in der update-Methode tatsächlich das Model ändern, die alte Row entfernen, eine neue mit den aktuellen User-Daten einfügen
 

sirair

Aktives Mitglied
der Model wird zwar aktualisiert, aber nicht die JTable. Kannst du bitte ein Beispiel für die erste Möglichkeit geben.
 
S

SlaterB

Gast
wie wärs mit der einen Code-Zeile von André Uhres, das scheint doch das einfachste
 
S

SlaterB

Gast
was heißt schon perfekt?
zu der von mir präferierten Art hier ein Beispiel:

JavaReference.com : Java, J2EE, Examples, Articles, Forum, Books, News : Example -> Creating simple JTable using AbstractTableModel

beachte wie das TableModel hauptsächlich einen Vektor mit komplexen Objekten enthält,
die getValueAt-Methode bestmmt ein MachineData-Objekt und je nach Index wird eines dessen Attribute zurückgegeben

auf diese Weise kann man mit den gleichen Daten wie im restlichen Programm arbeiten
ohne alles in eine für die Tabelle passende Struktur (zweidimensionales Schachbrett) zu kopieren
 

Michoel

Aktives Mitglied
hi,

vielleicht kann ich einem ja auch helfen, da ich grad eine JTable erstellt habe, wo ich mit einem Dialog neue Datensätze hinzufügen kann, editieren oder löschen.


Ich habe eine Methode wo das Model eines DefaultTableModels nochmals neu gerechnet und dem JTable übergeben wird.

Vielleicht bringen dir die Methoden etwas:

tableUserModel=new DefaultTableModel(tableUsers,tableHeadline);
tableUserModel.fireTableDataChanged();
tableUserModel.fireTableStructureChanged();
userTable.setModel(tableUserModel);
userTable.repaint();
userTable.updateUI();

Eventuell sind da überflüssige Methoden dabei ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
B JTable wird nicht angezeigt AWT, Swing, JavaFX & SWT 1
T Swing JTable wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
M JList wird angezeigt, JTable (DefaultTableModel) nicht AWT, Swing, JavaFX & SWT 7
M Swing JTable wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
A Swing JTable wird nicht über zurückegebene Referenz geaddet.Wieso nicht? AWT, Swing, JavaFX & SWT 5
W Neues TableModel und JTable wird nicht refreshed AWT, Swing, JavaFX & SWT 3
Spin JTable Header wird nicht angezeigt ohne ScrollPane AWT, Swing, JavaFX & SWT 3
xehpuk Swing JScrollBar wird nicht eingeblendet, wenn JTable befüllt wird AWT, Swing, JavaFX & SWT 4
K JTable wird nicht aktualisiert, wenn Filter gesetzt ist AWT, Swing, JavaFX & SWT 9
C JTable in JFrame wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
C JTable markierte Zelle wird bei removeRow nicht mit gelöscht AWT, Swing, JavaFX & SWT 6
H Swing Jtable wird nicht angezeigt..hilfe!! AWT, Swing, JavaFX & SWT 16
A Swing JTable wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
A JTable wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
M JTable wird in JFrame nicht angezeigt (händisch) AWT, Swing, JavaFX & SWT 6
G JTable (AbstractTableModel) wird nicht aktualisiert AWT, Swing, JavaFX & SWT 2
D jTable ausdrucken => € zeichen wird nicht richtig angezei AWT, Swing, JavaFX & SWT 7
G JTable wird nicht immer angezeigt AWT, Swing, JavaFX & SWT 4
W JTable wird vertikal in JScrollPane nicht ganz angezeigt AWT, Swing, JavaFX & SWT 2
B JTable mehrere Spalten | wird nicht angezeigt AWT, Swing, JavaFX & SWT 5
B JTable - Letzte Änderung wird nicht übernommen AWT, Swing, JavaFX & SWT 5
G JTable wird im Windows Look&Feel nicht gedruckt AWT, Swing, JavaFX & SWT 5
A JTable - Header wird nicht angezeigt AWT, Swing, JavaFX & SWT 8
D Swing JTable- Meine Tabelle der Klasse JTable wird nur bedingt angezeigt AWT, Swing, JavaFX & SWT 4
J JTable wird bei scrollen falsch gezeichnet AWT, Swing, JavaFX & SWT 3
N Fehler Inhalt von JTable wird gelöscht AWT, Swing, JavaFX & SWT 5
D JTable Mausevents, während editiert wird AWT, Swing, JavaFX & SWT 5
Dit_ JTable | getValueAt(..) wird zu oft aufgerufen. AWT, Swing, JavaFX & SWT 11
V JTable - SelectionMode wird durch RowFilter verändert AWT, Swing, JavaFX & SWT 2
S JTable Wert so bekommen wie er angezeigt wird..? AWT, Swing, JavaFX & SWT 2
aze JTable automatisch vergrößern wenn das zugehörige JFrame vergrößert wird AWT, Swing, JavaFX & SWT 13
G JTable - bei falscher Eingabe wird alter Wert genommen. AWT, Swing, JavaFX & SWT 2
S JComboBox in JTable wird erst nach klick angezeigt AWT, Swing, JavaFX & SWT 2
D [JTable] Dateninhalt verändern, sobald editiert wird AWT, Swing, JavaFX & SWT 2
T Jtable falscher Wert wird übergeben AWT, Swing, JavaFX & SWT 13
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
S HPRO und UPRO gemeinsame JTABLE gemeinsamer RENDERER ? AWT, Swing, JavaFX & SWT 1
F Swing JTable - MultiHeader inkl. Eingabemöglichkeit AWT, Swing, JavaFX & SWT 1
S JTable - Feldinhalte anzeigen AWT, Swing, JavaFX & SWT 15
D Swing JTable Spaltenbreite AWT, Swing, JavaFX & SWT 1
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G jTable - getSelectedRow() AWT, Swing, JavaFX & SWT 3
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
D Tastaturabfragen CTRL+t, CTRL+E bei eine JTable, bestehend aus JTextAteas AWT, Swing, JavaFX & SWT 4
P Checkboxes in JTable nicht editable AWT, Swing, JavaFX & SWT 9
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
izoards JTable in CSV File schreiben... AWT, Swing, JavaFX & SWT 23
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
M JTABLE / wie oft wurde gewürfelt. AWT, Swing, JavaFX & SWT 1
F JTable vergrößern AWT, Swing, JavaFX & SWT 2
H JTable: Diverse NullPointer-Exceptions zur Laufzeit AWT, Swing, JavaFX & SWT 3
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
B JTable Zellen zusammenfügen AWT, Swing, JavaFX & SWT 3
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
H JTable im JSplitPane darstellen AWT, Swing, JavaFX & SWT 2
MadMax2506 Swing JTable lädt sehr lange AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
R Swing JTable und Spaltenausrichtung AWT, Swing, JavaFX & SWT 8
G JTable füllen AWT, Swing, JavaFX & SWT 1
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
J Datensatz in jTable ausgeben AWT, Swing, JavaFX & SWT 3
M Swing Automatischer Editorstart in JTable-Zelle AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5
adiko01 JTable: Nur markierte Zeilen aus der Tabelle in CSV exportiern AWT, Swing, JavaFX & SWT 9
M JTable.setDefaultRenderer(...) greift nicht AWT, Swing, JavaFX & SWT 0
J JTable: Eingabe in Tabellenzelle korrigieren AWT, Swing, JavaFX & SWT 4
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
H Swing Jtable extra spalte AWT, Swing, JavaFX & SWT 6
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
S Swing Mal wieder JTable Ansicht aktualisieren AWT, Swing, JavaFX & SWT 10
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
VfL_Freak Swing Einzelne Zeile in jTable selektieren klappt nicht AWT, Swing, JavaFX & SWT 7
N AWT jTable CellRenderer AWT, Swing, JavaFX & SWT 6
T Swing JTable valueChanged datensatz löschen AWT, Swing, JavaFX & SWT 1
0 Swing JTable aus anderer Klasse updaten AWT, Swing, JavaFX & SWT 5
S Jtable defaultRenderer wohin damit ? AWT, Swing, JavaFX & SWT 23
T Swing JTable / FocusListener AWT, Swing, JavaFX & SWT 0
L Swing JTable im Panel darstellen AWT, Swing, JavaFX & SWT 8
T Swing Double Click bei Buttons in JTable AWT, Swing, JavaFX & SWT 9
J addRow bei JTable AWT, Swing, JavaFX & SWT 6
M Jtable gibt -1 wert bei selectedRow und Column AWT, Swing, JavaFX & SWT 3
Meeresgott Swing JTable AWT, Swing, JavaFX & SWT 4
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
C Swing Daten in JTable wiedergeben per TableModel und MVC Pattern AWT, Swing, JavaFX & SWT 16
Z Swing Drag&Drop zwischen JTable und JTree AWT, Swing, JavaFX & SWT 4
Thallius JTable dynamisch Spaltenanzahl verändern AWT, Swing, JavaFX & SWT 2
Thallius JTable dynamisch laden? AWT, Swing, JavaFX & SWT 2
B Swing JTable sortieren AWT, Swing, JavaFX & SWT 2
T Swing JTable auslesen und befüllen AWT, Swing, JavaFX & SWT 8
J JTable und Suchlogik AWT, Swing, JavaFX & SWT 4
Viktim Swing JTable mit Tab verlassen AWT, Swing, JavaFX & SWT 1
F Swing Spaltenbreite einer Column eines JTable auslesen AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben