Aktualisieren eines JTables funktioniert nicht

Status
Nicht offen für weitere Antworten.

marvin42

Mitglied
Hi Leute,

bei dem Versuch, die Daten (Zeilen, Spalten, Werte) meiner Tabellen-Klasse zu aktualisieren, werden zwar die Werte für die Anzahl der Zeilen und die Werte angenommen (-> sieht man an der Tabelle), die Anzahl der Spalten und die Spaltenüberschriften bleiben allerdings gleich.

Ich weiß trotz Kontrollausgabe etc. nicht, woran das liegt. Die Werte setzt er jedenfalls alle richtig.

Code:

TableModel:

Code:
public class MyTableModel extends AbstractTableModel
{
	private int zeilen, spalten;
	private String []titles;
	private Object [][]values;
	
	public MyTableModel(int zeilen, int spalten, String[] titles, Object[][] values)
	{
		this.zeilen = zeilen;
		this.spalten = spalten;
		this.titles = titles;
		this.values = values;
	}
	
	public void setZeilen(int z)
	{
		zeilen = z;
	}
	
	public void setSpalten(int s)
	{
		spalten = s;
	}
	
	public void setValues(Object[][] v)
	{
		values = v;
	}
	
	public void setTitles(String[] titles)
	{
		this.titles = titles;
	}
	
	public String getData()
	{
		
		return new String("zeilen: " + zeilen + "spalten: " + spalten + "titles: " + titles[0]);
	}
	
	public String getColumnName(int column)
	{ return titles[column]; }
	
	public int getColumnCount()
	{ return spalten; }
	
	public int getRowCount()
	{ return zeilen; }
	
	public Object getValueAt(int z, int sp)
	{
		if(z >= 0 && sp >= 0)
			return (values[z][sp]);
		
		else
			return (Object)null;
	}
}
 

marvin42

Mitglied
Table-Klasse:

Code:
public class VersatileDataTable
{
	private MyTableModel dataModel;
	private JTable tabelle;
	private JScrollPane scrollPane;
	
	private int zeilen, spalten;
	private String []titles;
	private Object [][]values;
	
	public VersatileDataTable(int zeilen, int spalten, String[] titles, Object[][] values)
	{
		//titles = new String[zeilen];
		//values = new Object[zeilen][spalten];
		this.titles = titles;
		this.values = values;
		
		dataModel = new MyTableModel(zeilen, spalten, titles, values);
		tabelle = new JTable(dataModel);
		scrollPane = new JScrollPane(tabelle);
		
		
	/*	for(byte i = 0; i < zeilen; i++)
			for(byte a = 0; a < spalten; a++)
				values[i][a] = new String("blabla");*/
		//System.out.println(titles[1]);
	}

/*	public TableModel getDataModel() 
	{
		return dataModel;
	}

	public void setDataModel(TableModel dataModel)
	{
		this.dataModel = dataModel;
	}*/

	public void setSpalten(int spalten) 
	{
		System.out.println("In setSpalten");
		this.spalten = spalten;
		dataModel.setSpalten(this.spalten);
	}

	public String[] getTitles() 
	{
		return titles;
	}
	
	public String getColumnName(int column)
	{
		return titles[column];
	}

	public void setTitles(String[] titles)
	{
		System.out.println("In setTitles");
		this.titles = titles;
		dataModel.setTitles(this.titles);
	}
	
	public String getData()
	{
		return dataModel.getData();
	
	}

	public Object[][] getValues()
	{
		return values;
	}
	
	public JScrollPane getScrollPane()
	{
		return scrollPane;
	}
	
	public JTable getJTable()
	{
		return tabelle;
	}

	public void setValues(Object[][] values)
	{
		System.out.println("In setValues");
		this.values = values;
		dataModel.setValues(this.values);
	}

	public void setZeilen(int zeilen)
	{
		System.out.println("In setZeilen");
		this.zeilen = zeilen;
		dataModel.setZeilen(this.zeilen);
	}
}
 

marvin42

Mitglied
Testlauf im Konstruktor der Frame-Klasse:

Code:
 String[] argS = {"Spalte 1", "Spalte2"};
		Object[][] argO = new Object[100][2];
		Object[][] arg2 = new Object[10][3];
		arg2[0][0] = new String("test");
		String[] argS2 = { "Alpha", "Beta", "Gamma" };
		
		tabelle = new VersatileDataTable(100, 2, argS, argO);
		
		tabelle.setSpalten(3);
		tabelle.setZeilen(10);
		tabelle.setTitles(argS2);
		tabelle.setValues(arg2);
		
		System.out.println(tabelle.getData());
		table.add(tabelle.getScrollPane());

Nach dem Setzen der neuen Werte sind diese zwar alle gesetzt, aber nur die Zeilenanzahl und die Werte werden in die Tabelle übernommen.
 
S

SlaterB

Gast
lasse mal setZeilen/ Spalten weg,
diese Zahlen sollten sich aus der Länge der Arrays ergeben,
dann hast du nie einen inkonsistenten Zustand,

und selbst dann solltest du möglichst nicht zweimal hintereinander etwas ändern,
sondern hast idealerweise zusätzlich noch setTitlesAndValues(spalten, zeilen)

in allen diesen Oprationen fehlt eine Informierung der GUI,
wenn sich die Spalten ändern:
fireTableStructureChanged()
ansonsten nur
fireTableDataChanged()
oder ähnlich

alles in Lehrbüchern oder hier nachzulesen
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
 
G

Guest

Gast
Kannst du mir vl. noch ein Beispiel geben, was ich schreiben muss, wenn ich zwei Zeilen neu eingefügt habe?

Muss ich dann fireTableRowsInserted zweimal schreiben bzw. welche Funktion muss ich benützen, um neue Spalten einzufügen?
 
S

SlaterB

Gast
wann immer einmal was eingefügt wurde, intern (am Ende der Einfügeoperation)
das Event auslösen,

welches genau kann ich nicht sagen,
probieren/ lesen/ auf andere Antworten warten,

wenn zweimal hintereinander von außen eine Einfüge-Operation gerufen wird
und daher zwei Events erzeugt werden, dann ist das kein Beinbruch,

es wäre nur etwas schöner, beide Zeilen gleichzeitig einzufügen,
also mit einer Operation die ein Array von Zeilen annimmt,
(wenn möglich)

das ist ja nix was mit JTable groß zu tun hat, sondern allgemeines Vorgehen,

z.B.
System.out.println("Hello World");
statt
System.out.print("Hello");
System.out.print(" ");
System.out.println(" World");
;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Probleme beim aktualisieren eines JPanels Java Basics - Anfänger-Themen 7
J Progressbar aktualisieren Java Basics - Anfänger-Themen 17
C Timer aktualisieren Java Basics - Anfänger-Themen 5
TimoN11 Array mit unterschiedlichen längen aktualisieren, dann als Methodenwert einsetzen Java Basics - Anfänger-Themen 1
J Java FX - Label aktualisieren Java Basics - Anfänger-Themen 1
J Aktuelle Zeit in einer JavaFX Anwendung aktualisieren lassen Java Basics - Anfänger-Themen 4
A Input/Output System.out Ausgabe aktualisieren, ohne Konsole vollzuspamen Java Basics - Anfänger-Themen 2
P WindowBuilder aktualisieren Java Basics - Anfänger-Themen 0
L Threads Laufbild Erzeugen Problem mit Aktualisieren des JPanels Java Basics - Anfänger-Themen 2
F Problem bei ImageIcon aktualisieren Java Basics - Anfänger-Themen 5
MrSnake Tabelleninhalt aktualisieren Java Basics - Anfänger-Themen 12
R Programm aktualisieren/refreshen Java Basics - Anfänger-Themen 7
2 Uhrzeit und Datum aktualisieren Java Basics - Anfänger-Themen 12
M Methoden Methoden aktualisieren Java Basics - Anfänger-Themen 2
M Liste mit repaint aktualisieren Java Basics - Anfänger-Themen 1
B Erste Schritte Anzeige von Graphics Objekten einzeln aktualisieren Java Basics - Anfänger-Themen 1
G Input/Output Webseite Cache-Control: max-age=3 Öfters Aktualisieren? Java Basics - Anfänger-Themen 1
J Bilder in Labels aktualisieren Java Basics - Anfänger-Themen 2
G Seite aktualisieren Java Basics - Anfänger-Themen 1
O JList aktualisieren während Dateieinlesung Java Basics - Anfänger-Themen 4
W Erste Schritte Timer soll jede Sekunde Label aktualisieren Java Basics - Anfänger-Themen 5
S Erste Schritte Gui aktualisieren Java Basics - Anfänger-Themen 5
M Variable aus einer anderen Klasse aktualisieren Java Basics - Anfänger-Themen 2
V JFrame aktualisieren Java Basics - Anfänger-Themen 6
M Tabelle aktualisieren (mal wieder) Java Basics - Anfänger-Themen 10
M Erste Schritte Tabelle aktualisieren (mal wieder) Java Basics - Anfänger-Themen 7
D JTable aktualisieren Java Basics - Anfänger-Themen 2
J Variablen Aktualisieren von Instanzvariablen Java Basics - Anfänger-Themen 14
J repaint() geht gar nicht; GUI aktualisieren Java Basics - Anfänger-Themen 10
Q Zeitanzeige aktualisieren Java Basics - Anfänger-Themen 7
J Jtable änderung soll graphics aktualisieren Java Basics - Anfänger-Themen 4
R Threads GUI über Hintergrund-Thread aktualisieren Java Basics - Anfänger-Themen 6
F GUI JTextField aktualisieren Java Basics - Anfänger-Themen 3
L Zeit sekündlich aktualisieren Java Basics - Anfänger-Themen 7
J JLabels in Panel Aktualisieren Java Basics - Anfänger-Themen 5
E JList GUI aktualisieren? Java Basics - Anfänger-Themen 3
L Client aktualisieren Java Basics - Anfänger-Themen 6
Ollek ArrayList nach Datenbankeintrag aktualisieren Java Basics - Anfänger-Themen 4
U jTable aktualisieren Java Basics - Anfänger-Themen 5
B PacMan: Panel aktualisieren Java Basics - Anfänger-Themen 2
Dit_ Aktualisieren von mehreren Views Java Basics - Anfänger-Themen 2
J JList Inhalt nach JButton Klick aktualisieren Java Basics - Anfänger-Themen 8
J JTable aktualisieren wenn TableModel sich ändert Java Basics - Anfänger-Themen 6
F contentPane aktualisieren Java Basics - Anfänger-Themen 2
L JList Aktualisieren funktioniert nur Zufällig Java Basics - Anfänger-Themen 3
B JApplet aktualisieren Java Basics - Anfänger-Themen 2
N Aktualisieren JTable Java Basics - Anfänger-Themen 2
T JList aktualisieren Java Basics - Anfänger-Themen 12
T GUI aktualisieren Java Basics - Anfänger-Themen 6
C GUI aktualisieren: repaint, validate, Fenstergröße ändern bringt nichts Java Basics - Anfänger-Themen 13
C jframe bzw. jpanel aktualisieren Java Basics - Anfänger-Themen 13
E Textfeld aktualisieren Java Basics - Anfänger-Themen 3
P Textarea aktualisieren, Referenz fehlt Java Basics - Anfänger-Themen 4
G fenster aktualisieren Java Basics - Anfänger-Themen 2
Antoras Applet aktualisieren Java Basics - Anfänger-Themen 2
M Ausgabe aktualisieren/ Stoppuhr Java Basics - Anfänger-Themen 4
S Jpanel aktualisieren Java Basics - Anfänger-Themen 9
S JTable aktualisieren (nach Datenbank updade) Java Basics - Anfänger-Themen 14
S JTree aktualisieren Java Basics - Anfänger-Themen 4
M JTree aktualisieren Java Basics - Anfänger-Themen 3
K Datum mittels Thread aktualisieren Java Basics - Anfänger-Themen 6
G Bild aktualisieren Problem! Java Basics - Anfänger-Themen 2
G Liste in mehreren unabhängigen Frames aktualisieren. Java Basics - Anfänger-Themen 6
H Textarea aktualisieren Java Basics - Anfänger-Themen 2
V Menüeinträge und ähnliches aktualisieren (aus properties) Java Basics - Anfänger-Themen 10
K Chart zur Laufzeit erstellen und aktualisieren Java Basics - Anfänger-Themen 2
M jTable aktualisieren Java Basics - Anfänger-Themen 5
H JTable richtig aktualisieren Java Basics - Anfänger-Themen 4
J schleife unterbrechen JTextArea aktualisieren Java Basics - Anfänger-Themen 8
W Kurse übers Internet aktualisieren Java Basics - Anfänger-Themen 6
G mehrere Frames nacheinander aktualisieren Java Basics - Anfänger-Themen 2
B JTable Werte aktualisieren Java Basics - Anfänger-Themen 2
G JList - aktualisieren Java Basics - Anfänger-Themen 6
S JTree aktualisieren bzw. komplett neu aufbauen Java Basics - Anfänger-Themen 6
F Aktualisieren einer einzelnen Zelle in JTable Java Basics - Anfänger-Themen 2
F Gebasteltet Fortschrittsanzeige: Aktualisieren Labels? Java Basics - Anfänger-Themen 4
F Aktualisieren einer Liste von einem entfernten Objekt aus. Java Basics - Anfänger-Themen 11
M JList Datenstring erweitern und JList aktualisieren Java Basics - Anfänger-Themen 5
D Applet im IE aktualisieren Java Basics - Anfänger-Themen 6
G JTable aktualisieren Java Basics - Anfänger-Themen 15
B GUI aktualisieren Java Basics - Anfänger-Themen 6
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
walid Öffnungszeiten eines Geschäftes Java Basics - Anfänger-Themen 3
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
B Synchronisation eines kleinen Museums Java Basics - Anfänger-Themen 47
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
Sachinbhatt Was ist die Notwendigkeit eines Sammlungsframeworks in Java? Java Basics - Anfänger-Themen 2
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben