JTable mit Daten aus einer HashMap füllen

Status
Nicht offen für weitere Antworten.

Unr3al

Mitglied
Hallo,

ich möchte meine Tabelle mit den Daten aus einer HashMap füllen. Dabei sollen die Keys aus der HashMap in die Spalte1 und die Values in die Spalte2. Ich habe das mit einem mehrdimensionalen Array gelöst, doch jetzt möchte ich das ganze dynamisch haben. Evtl. mit einer ArrayList(). Doch irgendwie stehe ich gerade auf dem Schlauch und weiß nicht, wie ich es lösen soll.

Mein Code mit dem Array sieht wie folgt aus:

Java:
  public Object getValueAt(int row, int column) {
    data = new Object[propertyMap.size()][columnNames.length];

    if(column == 0)
    {
      data[row][0] = propertyMap.keySet().toArray()[row];
    }
    else
    {
      data[row][column] = propertyMap.values().toArray()[row];
    }

    return data[row][column];
  }

Danke im Voraus für jede Hilfe.
 

ARadauer

Top Contributor
Java:
import java.util.HashMap;


public class Test {

	HashMap<String, String> propertyMap;

	public static void main(String[] args) {

		Test t = new Test();
		t.propertyMap = new HashMap<String, String>();
		t.propertyMap.put("Bier", "Stiegl");
		t.propertyMap.put("Ort", "Mondsee");
		t.propertyMap.put("Wer", "Ich");

		for(int i = 0; i <3; i++){
			System.out.println(t.getValueAt(i, 0)+" "+t.getValueAt(i, 1));
		}
	}

	public Object getValueAt(int row, int column) {
		//data = new Object[propertyMap.size()][columnNames.length];
		//wozu?

		if(column == 0)
		{
			return propertyMap.keySet().toArray()[row];
		}

		return propertyMap.values().toArray()[row];


	}

}

man erkennt an meinen Beispielen, das Freitag ist ;-)
 

Unr3al

Mitglied
Super vielen Dank. Jetzt sitze ich an setValueAt und removeRow. Mein Code zu setValueAt:

Java:
  public void setValueAt(Object value, int row, int col) {
    propertyMap.put(propertyMap.keySet().toArray()[row], value);
    fireTableCellUpdated(row, col);
  }
Der Wert wird dann auch gesetzt. Doch aktualisiere ich die Tabelle, ist der wieder weg. Was mache ich falsch? Danke.
 

KrokoDiehl

Top Contributor
Wenn du die getValueAt() Methode von ARadauer genommen hast, dann vermute ich, dass in deiner setValueAt() Methode die HashMap gar nicht aktualisiert wird.
Du solltest prüfen welcher Wert gerade gesetzt werden soll, denn die HashMap braucht Key und Value und das hängt ab von Zeile und Spalte (ich gehe immernoch davon aus, das Spalte 0 die Keys enthält und Spalte 1 die Values):

Java:
void setValueAt(Object value, int row, int col)
{
   if (col == 0)
   {
       propertyMap.put(value, null);
   }
   else
   {
       propertyMap.put( this.getValueAt(row, 0), value );
   }
   //fire updated usw.
}
 
Zuletzt bearbeitet:

Unr3al

Mitglied
Danke, das hat mir geholfen. Habe aber noch eine Frage. Ich versuche nun zu realisieren, dass bei einem Mausklick meine Tabelle sich komplett leert. Hierzu habe ich eine Methode deleteRows() implementiert:

Java:
  public void deleteRow(){
    int rows = getRowCount();
    for(int i = 0; i < rows; i++) {
      propertyMap.remove(this.getValueAt(i, 0));
    }
  }

Meine getValueAt sieht wie folgt aus:

Java:
  public Object getValueAt(int row, int column) {
    if(column == 0)
    {
      System.out.println(propertyMap.size());
        return propertyMap.keySet().toArray()[row];
    }
    return propertyMap.values().toArray()[row];
  }

Bekomme nun eine ArrayIndexOutOfBoundsException. Jemand eine Idee, woran es liegen mag?

Danke im Voraus.
 
S

SlaterB

Gast
weil die JTable getValueAt() mit recht hohen row-Wert aufruft,
wie hoch, das hängt davon ab, was getRowCount() liefert,

problemetatisch wäre auch, wenn du Daten löschst, aber das nicht über die richtigen Events der JTable mitteilst (fireTableDataChanged() usw.),
dann fragt diese gar nicht erst den neuen RowCount ab,

recht einfach wäre es zunächst, in getValueAt() eine zu hohe row abzufangen und "" oder sonstwas zurückzuliefern,
dann hast du 'nur' unnötige leere Zeilen in der Anzeige
 

KrokoDiehl

Top Contributor
Du möchstest dass sich deine Tabelle komplett leert?
Dann mach in deinem
Code:
TableModel
doch folgende Methode, die du beim entspr. Ereignis aufrufst:
Java:
public void clearData()
{
    propertyMap.clear();
    this.fireTableDataChanged();
    //dafür muss das Model von AbstractTableModel erben
    // ansonsten manuell implementieren
}

Ich schätze stark, dass deine Exception daher kommt, dass du in einer Schleife über alle Zeilen gehst, dabei aber selbst die Anzahl der Zeilen verringerst (durch das
Code:
remove
).
 

Unr3al

Mitglied
Habe es jetzt so gelöst:

Java:
  public void deleteRows(){
    for(int i = getRowCount()-1; i >= 0; i--) {
      propertyMap.remove(this.getValueAt(i, 0));
      this.fireTableDataChanged();
    }
  }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Auslesen veränderter Daten in einer jTable AWT, Swing, JavaFX & SWT 2
L JTable und Daten aus einer ArrayList AWT, Swing, JavaFX & SWT 6
H Daten aus einer JTable in einer Datei speichern AWT, Swing, JavaFX & SWT 10
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
C Swing Daten in JTable wiedergeben per TableModel und MVC Pattern AWT, Swing, JavaFX & SWT 16
I JTable: Doppelklick auf Table soll neues Fenster öffnen und Daten aus JTable anzeigen AWT, Swing, JavaFX & SWT 4
S JTable Daten aus Array AWT, Swing, JavaFX & SWT 9
B Swing JTable mit Daten - Reihen-Größe anpassen AWT, Swing, JavaFX & SWT 0
F Swing JTable: Daten voreinstellen AWT, Swing, JavaFX & SWT 4
B Daten in eine JTable schreiben AWT, Swing, JavaFX & SWT 3
D Daten von JDialog an JTable in JFrame übergeben AWT, Swing, JavaFX & SWT 7
O JTable zeigt die alte Daten wieder AWT, Swing, JavaFX & SWT 23
H JTable zeigt keine Daten an AWT, Swing, JavaFX & SWT 5
C Swing JTable Daten einfügen AWT, Swing, JavaFX & SWT 6
Ollek IndexOutOfBoundsException bei neuen Daten in JTable AWT, Swing, JavaFX & SWT 13
J Swing JTable-Daten Speichern und bei zeilen-änderung beibehalten. AWT, Swing, JavaFX & SWT 6
C Daten aus DB -> JTable aktualisieren klappt nicht AWT, Swing, JavaFX & SWT 16
T Daten mittels ComboBox in ein JTable adden AWT, Swing, JavaFX & SWT 7
Ollek Realisierung: JTable zur Laufzeit mit neuen Daten füllen AWT, Swing, JavaFX & SWT 3
GianaSisters Swing jTable Daten unsichtbar AWT, Swing, JavaFX & SWT 12
D Problem mit JFileChooser -> Daten werden mit anführungsstriche in JTable geschrieben AWT, Swing, JavaFX & SWT 8
L Swing Daten in JTable aktualisieren AWT, Swing, JavaFX & SWT 5
S Swing Daten aus Datenbank in JTable AWT, Swing, JavaFX & SWT 2
L Daten werden in JTable nicht angezeigt:( AWT, Swing, JavaFX & SWT 6
J Daten in JTable nach Sortierung auslesen AWT, Swing, JavaFX & SWT 2
hdi Swing JTable & Filtern: Daten nicht in der View AWT, Swing, JavaFX & SWT 2
S JTable Bug - eingegebene Daten werden falsch geparst :( AWT, Swing, JavaFX & SWT 4
hdi Swing JTable: Löschen vom Daten im Model AWT, Swing, JavaFX & SWT 7
R JTable für sehr viele Daten sehr langsam AWT, Swing, JavaFX & SWT 20
B JTable: Wie speichert man manuell eingegebene Daten ausTable AWT, Swing, JavaFX & SWT 2
A JTable Vector mit Daten Ordnen bei setAutoCreateRowS AWT, Swing, JavaFX & SWT 8
S JTable Daten bearbeiten und Grauwertbild erzeugen! AWT, Swing, JavaFX & SWT 4
R Daten in JTable in mehreren Zeilen darstellen AWT, Swing, JavaFX & SWT 11
C JTable fehlende Daten AWT, Swing, JavaFX & SWT 2
raptorrs Daten aus JTable in JTextField übertragen AWT, Swing, JavaFX & SWT 11
G JTable Daten auslesen AWT, Swing, JavaFX & SWT 2
M JTable alte Daten vor Änderung abfangen AWT, Swing, JavaFX & SWT 11
O JTable mit objekt-daten füllen AWT, Swing, JavaFX & SWT 4
J jTable Daten werden nicht sofort sichtbar AWT, Swing, JavaFX & SWT 5
G JTable dynamische Darstellung der ankommenden Daten AWT, Swing, JavaFX & SWT 19
vogella JTable - Hinzufügen von Datensätzen und Ändern von Daten AWT, Swing, JavaFX & SWT 2
D JTable und ungültige Daten AWT, Swing, JavaFX & SWT 2
F JTable Daten aktualisieren AWT, Swing, JavaFX & SWT 2
F JTable Daten übernehmen AWT, Swing, JavaFX & SWT 2
D Daten über Button-Druck in JTable einfügen AWT, Swing, JavaFX & SWT 7
R nur bestimmte Daten in JTable anzeigen lassen? AWT, Swing, JavaFX & SWT 3
D JTable zum Einfügen/Löschen/Editieren von Daten AWT, Swing, JavaFX & SWT 5
J JTable / Model Daten verändern AWT, Swing, JavaFX & SWT 5
M JTable zeigt daten nicht aktuell an AWT, Swing, JavaFX & SWT 4
C Dynamisches Zuweisen von Daten an eine JTable zur Laufzeit AWT, Swing, JavaFX & SWT 4
L Checkbox in JTable (again), bei true Daten in Header AWT, Swing, JavaFX & SWT 7
G Problem mit JTable / mit dem Eintragen der Daten aus Vector AWT, Swing, JavaFX & SWT 4
R JTable mit Daten aus der Datenbank füllen AWT, Swing, JavaFX & SWT 3
V Daten ins JTable laden bei Start der GUI AWT, Swing, JavaFX & SWT 6
M Daten aus Datenbank ins JTable einfügen AWT, Swing, JavaFX & SWT 4
V Daten im JTable speichern AWT, Swing, JavaFX & SWT 11
G JTable daten auslesen AWT, Swing, JavaFX & SWT 6
M Daten in JTable aus DB schreiben ? AWT, Swing, JavaFX & SWT 16
D Merken, daß Daten in der JTable sich geändert haben... AWT, Swing, JavaFX & SWT 2
L Daten mittels ObjectInputStream ins JTable AWT, Swing, JavaFX & SWT 7
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
H Swing Jtable extra spalte AWT, Swing, JavaFX & SWT 6

Ähnliche Java Themen

Neue Themen


Oben