Archiv verlassen und diese Seite im Standarddesign anzeigen : Von ArrayList lesen und in eine JTable schreiben
Hallo,
ich habe eine Problem und ich hoffe dass ihr mir da weiterhelfen könnt...
ich habe eine ArrayList Person und ich habe eine Tabelle und ich will von der
ArrayList Person die Daten in JTable rein tun...
wie kann ich das machen...
vielen dank im voraus...
Du brauchst erstmal ein Datenmodel, das von AbstractTableModel abgeleitet ist. Dazu erzeugst Du dir noch einen Listener, der dir sagt wenn die Tabelle geändert wurde und erzeugst dann eine JTable mit diesem Datenmodel.
Beim Datenmodel musst Du dann Methoden wie z.B. getValueAt() so überschreiben, dass der entsprechende Wert aus dem Array zurückgegeben wird.
Hallo,
danke für deine schnelle Antwort...
ich bin neu bei programmieren :( und kannst du bitte einbissle detalliert erklären
mit dem Datenmodell...mit einem kleinen Beispiel vielliecht...
vielen dank
Ok, ich hab hier mal einen Teil aus einem Programm, das ich mal geschrieben habe:
dataModel = new AbstractTableModel() // anonyme Klasse
{ // dataModel ist von der Klasse AbstractTableModel
public int getColumnCount()
{
if(AdressenListe.isEmpty() == true) // AdressenListe ist ein 2D-Vector
return 0;
else
{
Vector tmp = (Vector)AdressenListe.firstElement();
return tmp.size();
}
}
public int getRowCount()
{
if(AdressenListe.isEmpty() == true)
return 0;
else
return AdressenListe.size();
}
public String getColumnName(int column)
{
if(AdressenListe.isEmpty() == true)
return null;
else
switch (column)
{
case 0 : return "ID";
case 1 : return "Name";
case 2 : return "Beruf";
default: return ""+column;
}
}
public Object getValueAt(int row, int column)
{
if (AdressenListe.isEmpty() == true)
return null;
Vector tmp = (Vector)AdressenListe.elementAt(row);
return tmp.elementAt(column);
}
public void setValueAt(Object aValue, int row, int column)
{
Vector tmp = new Vector(); //leerer Vector
tmp.add(getRowCount()+1+"");
tmp.add("");
tmp.add("");
if (column == -1) // Zeile löschen
{
AdressenListe.remove(row);
while(++row <= getRowCount())
{
tmp = (Vector)AdressenListe.elementAt(row-1);
tmp.setElementAt(row+"",0);
}
}
else if (row > getRowCount()) // Zeile anhängen
{
AdressenListe.addElement(tmp);
}
else if (row < getRowCount() && row != -1)
{
if (column != 0) // Zeile ändern
{
tmp.clear();
tmp = (Vector)AdressenListe.elementAt(row);
tmp.setElementAt(aValue,column);
}
else // Zeile hinzufügen
{
tmp.setElementAt(row+1+"",0);
AdressenListe.add(row,tmp);
while(++row < getRowCount())
{
tmp = (Vector)AdressenListe.elementAt(row);
tmp.setElementAt(row+1+"",0);
}
}
}
}
public boolean isCellEditable(int row,int column)
{
return column != 0;
}
};
dataModel.addTableModelListener(new TableModelListener()
{
public void tableChanged(TableModelEvent e)
{
speichern.setEnabled(true);
}
});
txtTable = new JTable(dataModel); // Datenmodel in Tabelle einfuegen
pane = new JScrollPane(txtTable); // Tabelle in JPanel einfuegen
Es werden hier drei Spalten beschrieben, wobei die 2. und 3. editierbar sind. Über ein Menü (nicht beschrieben) können Zeilen hinzugefügt bzw. entfernt werden.
Um Änderungen zu aktualisieren muss in einem ActionListener noch folgende Zeile stehen:
dataModel.fireTableDataChanged();
Das sollte Dir ein Stück weiter helfen.
Ansonsten habe ich noch zwei sehr nützliche Links:
http://www.galileocomputing.de/openbook/javainsel5/
http://www.javabuch.de/
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.