Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie "dynamisch" Daten in eine JTable einfügen??



Lin728
11-08-2002, 17:25
Hi,

Also, was ich will, ist, in eine JTable während der Laufzeit daten einzufügen.
Das Fenster ist dabei schon sichtbar, inc. JTable1. D.H. ich möchte sie praktisch "austauschen".
Wenns einen einfacheren weg gibt da was reinzumachen, oder wieder zu löschen (Java-GTK jlist.clear()) bitte sagts mir!!
Ich habe das so gemacht:

jtable1=new jtable( {"Deutsch", "Englisch"}, {{"Hallo", "Hello"}, {"gehen", "walk"}});
this.repaint();

Soweit ich das verstehen kann, hab ich da was nicht ganz verstanden?!
Wie kann man in Swing z.B. anordnen, das etwas angezeigt wird. In GTK geht das ja von automatisch, wenn ich da einer Liste was hinzufüge, steht es automatisch drinnen, da muss ich nicht erst manuell ein neuzeichnen anordnen....

Bitte entschuldigt meine naivität und unwissenheit und drückt noch einmal ein Auge zu ;-)
Mfg

anda_skoa
11-08-2002, 19:19
Hi!

swing ist nicht meine Stärke, aber ein Versuch kann nicht schaden :)

DIe Doku zu JTable empfiehlt, die Daten als TableModel bereit zustellen.

Am besten wird sein, du leitest dein TableModel von AbstractTable Model ab.
Deine Subklasse stellt dann Methoden für dich zum Ändern zur Verfügung, die dann ihrerseits zB AbstractTableModel.fireTableDataChanged() aufrufen (oder fireTableCellUpdated, falls du nur eine Zelle änderst).
Das Updaten des JTables passiert dann wahrscheinlich auch automatisch.

Siehe auch
Java Tutirial: "How to use tables"
http://java.sun.com/docs/books/tutorial/ui/swing/table.html

Ciao,
_

Lin728
11-08-2002, 19:26
Vielen Dank :)

anda_skoa
11-08-2002, 20:34
Kein Problem, ich helfe gerne!

Außerdem ist noch kein Meister von Himmel gefallen, wie man so schön sagt.

Das mit dem AbstarctTableModel schaut nicht so kompliziert aus.
Ich denke das geht in etwas so



public class VocabularyTableModel extends AbstractTableModel
{
protected Vector deutsch;
protected Vector englisch;

public VocabularyTableModel()
{
super();
deutsch = new Vector();
englisch = new Vector();
}

public int getColumnCount()
{
return 2;
}

public int getRowCount()
{
return deutsch.capacity();
}

public Object getValueAt(int row, int column)
{
if (column == 0)
return deutsch.elementAt(row);
else
return englisch.elementAt(row);
}

// das ist jetzt eine neue Methode
public void addVocabulary(String de, String en)
{
deutsch.addElement(de);
englisch.addElement(en);
fireTableDataChanged();
}
}


Das ist jetzt ohne Überprüfungen af Duplikate, etc.

Ciao,
_

Lin728
11-08-2002, 21:10
Danke, echt klasse!

Lg