N'Abend,
ich habe mich heute mal ein wenig mit Swing beschäftigt und frage mich jetzt, ob es nicht eine schönere Lösung für das folgende Problem gibt: Ich habe eine Datenstruktur (es folgt Pseudocode):
Diese wird in einer anderen Klasse in Form einer ArrayList verwaltet:
Und jetzt kommt der Knackpunkt:
Ich habe jetzt nach Möglichkeit wirklich nur das Wichtigste heraussondiert. Ich hoffe, dass dadurch möglichst abstrakt klar wird, worum es geht. Das Panel wird dann entsprechend als Komponente in ein JFrame eingesetzt.
Xelsarion
EDIT: Zur Struktur, die Klasse Panel liegt mit anderen Klassen zusammen in einem Package gui, die Klasse Manager im Package manager und die Klasse Data schließlich im Package data. In meinem tatsächlichen Programm beziehen sich die Klassennamen natürlich etwas mehr auf ihre Funktionalität.
ich habe mich heute mal ein wenig mit Swing beschäftigt und frage mich jetzt, ob es nicht eine schönere Lösung für das folgende Problem gibt: Ich habe eine Datenstruktur (es folgt Pseudocode):
Java:
class Data {
private String s1;
private String s2;
// ...
}
Java:
class Manager {
public static final String[] header = new String[] {
"S1", "S2" // ...
}
private static ArrayList<Data> dataList;
public static String[][] dataListToStringArray() {
// @return Die komplette Liste in Form eines 2D-Arrays
}
}
Java:
class Panel extends JPanel {
private JTable table;
private JScrollPane pane;
public Panel() {
table = new JTable(Manager.dataListToStringArray(), Manager.header);
pane = new JScrollPane(table);
this.add(pane);
}
// Es geht um diese Stelle!
public void update(Manager m) {
this.remove(pane);
table = new JTable(Manager.dataListToStringArray(), Manager.header);
pane = new JScrollPane(table);
this.add(pane);
this.revalidate();
}
}
- Gibt es eine elegantere Möglichkeit, die Tabelle zu aktualisieren, wenn die ArrayList erweitert wird? Da die Erweiterung per Buttondruck erfolgt, habe ich in der actionPerformed() des ActionListeners des Buttons momentan panel.update() stehen.
- Ist die allgemeine Struktur des Programmes in Ordnung so, oder mache ich etwas grundlegendes falsch? Falls euch da was auffällt, macht mich bitte darauf aufmerksam!
Xelsarion
EDIT: Zur Struktur, die Klasse Panel liegt mit anderen Klassen zusammen in einem Package gui, die Klasse Manager im Package manager und die Klasse Data schließlich im Package data. In meinem tatsächlichen Programm beziehen sich die Klassennamen natürlich etwas mehr auf ihre Funktionalität.