Daten in Tabelle setzen.

Status
Nicht offen für weitere Antworten.

Milo

Bekanntes Mitglied
Hallo,

ich versuch mich nun schon ein Weilchen ergebnislos an folgendem Problem:

Ich habe ein Tabellenmodel, in dem ich die Daten in einer Map speichere (auszug):
Code:
public abstract class RawDataTableModel extends AbstractTableModel {

	private static final long serialVersionUID = -5821674686007492366L;
	private Map<String, Object> data = new Hashtable<String, Object>();
	private int row=0, col=0;
	private String[] tableHead;
	
	public RawDataTableModel(String[] tableHead) {
		this(tableHead, 20);
	}

	public RawDataTableModel(String[] tableHead, int row) {
		//super(tableHead, row);
		this.row = row;
		this.col = tableHead.length;
		this.tableHead = tableHead;
	}


	/**
	 * Fuegt eine leere Zeile an die
	 * Tabelle an.
	 *
	 */
	public void addRow(){
		this.row++;
	}
	
	/**
	 * Liefert <code>true</code>, wenn die Tabelle keinen Inhalt hat
	 * @return isEmptyTable
	 */
	public boolean isEmpty() {
		return this.data.isEmpty();
	}

	
	/**
	 * Liefert die Klasse der Spalte
	 * @param columnIndex
	 * @return columnClass
	 */
	@Override
	public Class<?> getColumnClass(int columnIndex) {
		if (columnIndex <= 1)
			return String.class;
		else if(columnIndex == this.getColumnCount()-1)
			return Boolean.class;
		return Double.class;
	}

    /**
	 * Gibt <code>true</code> zurueck, wenn
	 * die Zelle editierbar ist.
	 * @param rowIndex
	 * @param columnIndex
	 * @return isCellEditable
	 */
	@Override
	public boolean isCellEditable(int rowIndex, int columnIndex) {
		if (rowIndex==this.getRowCount()-1)
			this.addRow();
		return rowIndex < this.getRowCount() && columnIndex < this.getColumnCount();
	}

	/**
	 * Liefert die Anzahl der Zeilen
	 */
	@Override
	public int getRowCount() {
		return this.row;
	}

	/**
	 * Liefert die Anzahl der Spalten
	 */
	@Override
	public int getColumnCount() {
		return this.col;
	}
	  
	/**
	 * Gibt die Spaltenkopfbezeichnung der Spalte <code>columnIndex</code> zurueck
	 * @param columnIndex
	 * @return tableHead
	 */
	@Override
	public String getColumnName(int columnIndex) {
		return this.tableHead[ columnIndex ];
	}

	@Override
	public void setValueAt(Object value, int rowIndex, int colIndex) throws IndexOutOfBoundsException {
		if (rowIndex < 0 || colIndex < 0 || colIndex >= this.col)
			throw new IndexOutOfBoundsException(this.getClass() + " Unzulaessige Zellenangabe!");
		if (rowIndex == this.row-1)
			this.addRow();
		String key = "[" + rowIndex + ", " + colIndex + "]";
		if (value == null)
			this.data.remove( key );
		else {
			this.data.put(key, value);
			if (colIndex != this.col-1)
				this.data.put("[" + rowIndex + ", " + (this.col-1) + "]", true);
		}
	}
	
	@Override
	public Object getValueAt(int rowIndex, int colIndex) {
		if (rowIndex < 0 || colIndex < 0 || rowIndex >= this.row || colIndex >= this.col)
			throw new IndexOutOfBoundsException(this.getClass() + " Unzulaessige Zellenangabe!");
		String key = "[" + rowIndex + ", " + colIndex + "]";
		return this.data.get( key );
	}
			
	
	/**
	 * Liefert eine Hashtable mit dem Inhalt der Tabelle
	 * @return data
	 */
	public Map<String, Object> getTableData() {
		return this.data;
	}
	
	/**
	 * Setzt eine Hashtable mit dem Inhalt der Tabelle
	 * @return data
	 */
	public void setTableData(Map<String, Object> newData) {
		//this.clearData();
		this.data = newData;
		System.out.println("DEBUG  " +this.getValueAt(1,1));
	}	

}

Eine abgeleitete Klasse übergibt als nur den Tabellenkopf.

Die Tabelle ist zu begin leer, damit der Nutzer sie mit Daten füllen kann. Nun habe ich, damit man den Inhalt der Tabelle speichern kann, die Methode getTableData hinzugefüht. Ich speichere somit die Map weg. Das geht problemlos. Nun möchte ich sie jedoch auch wieder einlesen können. Ich dachte, dass ich dies einfach über setTableData realisieren kann, in dem ich die Map einfach überschreibe. Problem ist nun, dass ich diese Daten nicht sehe. Die direkte Testausgabe (getValueAt(1,1) ) liefert noch den gelesenen Inhalt, in der Tabelle selbst sehe ich aber die Daten nicht. Was muß ich, damit ich meine eingelesenen Daten in der Tabelle auch sehe?

Gruß Micha
 

Milo

Bekanntes Mitglied
Hallo,

Mensch, dat ging ja fix. Aber so ganz funktionierts noch nicht bzw ist nocht nicht ausreichend

SlaterB hat gesagt.:
fireTableDataChanged();
Code:
public void setTableData(Map<String, Object> newData) {
	this.data = newData;
	this.fireTableDataChanged();
}

SlaterB hat gesagt.:
deine setValueAt-Methode solltest du auch mal mit einem Lehrbuch vergleichen
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#data

Habe ich aus dem Handbuch. Warum ist die schlecht?

Kannst mir gerade für mein eigentliches Problem ggf. einen etwas größeren Brocken zuwerfen?

Gruß Micha
 
S

SlaterB

Gast
der Brocken war der Link, denn dort ist in der setValueAt auch fireXY() zu sehen,

mit fireXY() erzeugt man ein Event und alle Listener, wie die JTable, bekommen mit, dass sich was geändert hat

wenns damit noch nicht geht, dann weiß ich auch nicht mehr,

mit einem kompletten Beispielprogramm ließe sich der Fehler sofort finden
 

Milo

Bekanntes Mitglied
Hallo SlaterB,

war ja klar, dass wenn ich das Problem auf drei Klassen und das Wesentliche beschränke, sich dieses in Luft auflöst. Das einfache hinzufuegen von
Code:
this.fireTableDataChanged();
scheint zu reichen. Mein Problem muß also an einer anderen Stelle liegen. Trotzdem schon mal Danke!

Könntest Du mir noch sagen, was an meiner setValueAt()-Methode schlecht ist? Auf der JAVA Seite wird ein Array benutzt. Da ich aber die Anzahl der Einträge nicht kenne und im Handbuch dieses Bsp. drin war, habe ich es (abgewandelt) genommen. Was stört Dich?

Gruß Micha
 

Milo

Bekanntes Mitglied
Hi,

achso, gut, das habe ich natürlich hinzugefügt nun ;-)

Schöne Grüße Micha
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Daten aus Excel-Tabelle in Java importieren Java Basics - Anfänger-Themen 15
T printf Daten aus der Tabelle in Excel übernehmen Java Basics - Anfänger-Themen 5
I Daten aus Arraylists in eine Tabelle übertragen Java Basics - Anfänger-Themen 2
B daten speichern in einer tabelle Java Basics - Anfänger-Themen 5
Z Array mit daten einer datenbankbefüllen und dies an eine tabelle geben Java Basics - Anfänger-Themen 6
M Einfügen von Daten in eine Tabelle Java Basics - Anfänger-Themen 9
babel Datenbank Daten direkt an die Tabelle übergeben ohne Arrays Java Basics - Anfänger-Themen 9
S Daten aus Tabelle auslesen Java Basics - Anfänger-Themen 5
G Null P. E. beim einlesen von daten in eine tabelle? Java Basics - Anfänger-Themen 2
G Daten in eine DB-Tabelle schreiben Java Basics - Anfänger-Themen 3
F Daten in MySQL Tabelle schreiben Java Basics - Anfänger-Themen 9
D Tabelle -> Daten eingeben -> Falsche erhalten Java Basics - Anfänger-Themen 9
V Daten aus Access in eine Tabelle schreiben Java Basics - Anfänger-Themen 3
T Unvollständige Daten in der TableView Java Basics - Anfänger-Themen 8
S Daten aus Import Datei auslesen und sortieren Java Basics - Anfänger-Themen 2
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
Mady Daten von JList & Combobox in JTable adden Java Basics - Anfänger-Themen 2
M Daten aus errechneter Methode in Datenbank(SQLite) schreiben Java Basics - Anfänger-Themen 60
W Daten in Echtzeit übernehmen Java Basics - Anfänger-Themen 5
Z Java ArrayList speichert falsche Daten ab bzw. gibt falsche Daten aus? Java Basics - Anfänger-Themen 42
M Daten aus .txt Datei einlesen und weiterverarbeiten Java Basics - Anfänger-Themen 80
I H2 Datenbank starten / Daten in File speichern Java Basics - Anfänger-Themen 25
M Mehrere Daten/ Variablen Speichern Java Basics - Anfänger-Themen 9
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
P Schiebefix - ArrayList überschreibt Daten Java Basics - Anfänger-Themen 3
S Daten/Klassen/Packages richtig updaten!? Java Basics - Anfänger-Themen 2
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
H Daten aus einer Datei in eine Liste speichern Java Basics - Anfänger-Themen 23
M Tabellen- Daten laden Java Basics - Anfänger-Themen 2
A Klasse um daten zu einlesen Java Basics - Anfänger-Themen 26
A Literale für primitive Daten Typen Java Basics - Anfänger-Themen 4
N Zwei Daten (Datum) miteinander vergleichen, abspeichern, laden Java Basics - Anfänger-Themen 4
A Daten auslesen/vergleichen Java Basics - Anfänger-Themen 3
D Sportwetten Daten Atomatisch analysieren um optimale Strategie zu erhalten Java Basics - Anfänger-Themen 6
S Java Daten in Excel speichern Java Basics - Anfänger-Themen 1
S Daten speichern, ohne Datenbank Java Basics - Anfänger-Themen 8
L Daten aus ArrayList in Datenbank durchsuchen Java Basics - Anfänger-Themen 5
Shallty Daten speichern und ändern? Java Basics - Anfänger-Themen 32
M Sqlite table löschen und daten einfügen Java Basics - Anfänger-Themen 5
S Binäre-Suche bei unsortierten Daten Java Basics - Anfänger-Themen 7
N Was passiert wenn wir Daten auf der Festplatte abspeichern wollen? bzgl. BufferStreams Java Basics - Anfänger-Themen 9
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
A Minesweeper - Daten Java Basics - Anfänger-Themen 46
A Eingelesene Daten in Array(Liste) abspeichern? Java Basics - Anfänger-Themen 18
S Daten aus zwei Verschiedenen Tabellen in eine ArrayListe Java Basics - Anfänger-Themen 4
WPS1000 Input/Output Wie aktiviere ich den Daten Transfer von der RS232 in meine Java Applikation Java Basics - Anfänger-Themen 2
R Eigenes Protokoll zur Übermittlung von Daten zum Webserver? Java Basics - Anfänger-Themen 4
A Reader wohin werden Daten gespeichert? Java Basics - Anfänger-Themen 7
M Erste Schritte CSV-File einlesen und Daten verarbeiten Java Basics - Anfänger-Themen 5
S Daten aus eigenständiger .class-Datei abrufen Java Basics - Anfänger-Themen 1
E Daten dem Super Aufruf übergeben Java Basics - Anfänger-Themen 3
M jTabel mit Daten Füllen Java Basics - Anfänger-Themen 5
M Wie erzeuge ich die Differenz von zwei Daten in Stunden?? Java Basics - Anfänger-Themen 2
S Daten lesen und speichern Java Basics - Anfänger-Themen 26
S JTable mit Daten füllen Java Basics - Anfänger-Themen 7
L Java Programm zum Auswerten von Daten Java Basics - Anfänger-Themen 11
H Passwortmanager, Sicherheit der Daten Java Basics - Anfänger-Themen 12
G Best Practice Wie große "Tabellen" effizient durchsuchen und Daten händeln? Java Basics - Anfänger-Themen 15
U Daten aus Datei einlesen Java Basics - Anfänger-Themen 4
M Best Practice Daten-Import /Trabsfomration aus Textdatei Java Basics - Anfänger-Themen 12
R JTable Suchfunktion mit SQL Daten Java Basics - Anfänger-Themen 2
E Daten gehen nicht in Datenbank Java Basics - Anfänger-Themen 14
M Erste Schritte Speichern von mehreren Daten Java Basics - Anfänger-Themen 3
J Daten einer Textdatei in ein JTable importieren. Java Basics - Anfänger-Themen 3
F Daten von Thread an den aufrufenden zurückgeben Java Basics - Anfänger-Themen 22
C Endlosschleife bei füllen von Daten im JTable Java Basics - Anfänger-Themen 5
N Erste Schritte Dedicated Server \ Senden und Empfangen von Daten/Befehlen Java Basics - Anfänger-Themen 2
A Probleme beim zykl. aktulisieren von Daten in JTable Java Basics - Anfänger-Themen 3
D NPE beim laden von Daten aus MySQL Java Basics - Anfänger-Themen 9
P Einlesen von Daten via BufferedReader Java Basics - Anfänger-Themen 4
P Methoden ausgelesene (CSV-) Daten in Liste einer anderen Klasse einlesen Java Basics - Anfänger-Themen 0
F Http Post von mehreren Daten Java Basics - Anfänger-Themen 5
F Daten auf Webserver laden - wiederholen bei Fehler Java Basics - Anfänger-Themen 0
W Best Practice problemabhängige Persistentmachung von Daten Java Basics - Anfänger-Themen 6
P Daten von Internetseite auslesen Java Basics - Anfänger-Themen 10
N Daten/Formular per POST an Firefox/Browser senden Java Basics - Anfänger-Themen 7
D Daten mit Apache POI in eine Excel Datei schreiben Java Basics - Anfänger-Themen 5
T JTable Daten aus txt datei Java Basics - Anfänger-Themen 3
P zweidimensionales Array anlegen und mit DB-Daten füllen Java Basics - Anfänger-Themen 14
V Einlesen von Daten Java Basics - Anfänger-Themen 8
J TableView zeigt keine Daten an Java Basics - Anfänger-Themen 14
J Daten im Programm speichern Java Basics - Anfänger-Themen 14
N Interface Daten einem Implementierten Interface zuweisen Java Basics - Anfänger-Themen 37
O Probleme mit CSV Daten Java Basics - Anfänger-Themen 10
M Arrays: Trennung von Daten und Darstellung Java Basics - Anfänger-Themen 1
S Daten aus Array in Klasse übertragen Java Basics - Anfänger-Themen 12
M Wie sicher sind Daten im Java Programm? Java Basics - Anfänger-Themen 9
R Daten via Post an php Script senden Java Basics - Anfänger-Themen 1
B Probleme bei "Daten in CSV File schreiben". Java Basics - Anfänger-Themen 9
C Datei mit Daten einlesen und höchsten wert der zweiten Spalte ermitteln Java Basics - Anfänger-Themen 1
W (XML/XSL) Daten aus Eclipse in eine Klasse Laden. Java Basics - Anfänger-Themen 1
I Daten speichern ohne Datenbank Java Basics - Anfänger-Themen 20
D Daten von einem int in einen string Java Basics - Anfänger-Themen 5
L Daten aus Array Feld löschen Java Basics - Anfänger-Themen 2
T Input/Output Daten/Objekte einfach speichern Java Basics - Anfänger-Themen 5
IngoF GUI mit Thread Daten austauschen. Java Basics - Anfänger-Themen 6
S Daten aus anderen Dateien in neue Datei einlesen Java Basics - Anfänger-Themen 3
fLooojava Daten im selben Netzwerk an IP Java Basics - Anfänger-Themen 1
M Junit Tests durchführen, die eine Verbindung zu einer Daten erfordern Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben