Hi,
ich bräuchte mal einen Tip zur Organisation von Klassen und Packages in Bezug auf GUIs und ListenModellen.
Im Speziellen habe ich ein Package "gui", das eine Klasse "MainWindow" enthält, die wiederum eine (bislang) private Klasse eines AbstractListModels enthält.
Wenn ich jetzt aus einem anderen Package heraus (in meinem Fall bspw. Klasse "Main") etwas in die Liste des MainWindow hineinlegen möchte, also eine Methode des Objektes des abstrakten Listenmodells aufrufen möchte (hier z.B.: addKunde()), ist diese natürlich nicht sichtbar, weil das ListenModel ja eine private Unterklasse von "MainWindow" ist.
Wäre es noch "guter Stil" die Klasse des AbstractListModels public zu machen, damit sie von außen sichtbar ist? Oder Sollte ich Sie generell aus der Klasse "MainWindow" herausnehmen?
Wie würdet Ihr hier den Zugriff, bzw. die Klassenorganisation auf solche Datenlisten in GUIs realisieren?
Achso, es handelt sich um eine Übungsaufgabe, deswegen ist die Datenhaltung hier nicht in Datenbanken oder Dateien vorgesehen, sondern die Listen halten alle Daten zur Laufzeit.
Vielen Dank für Hilfe!
Pseudo-Code:
ich bräuchte mal einen Tip zur Organisation von Klassen und Packages in Bezug auf GUIs und ListenModellen.
Im Speziellen habe ich ein Package "gui", das eine Klasse "MainWindow" enthält, die wiederum eine (bislang) private Klasse eines AbstractListModels enthält.
Wenn ich jetzt aus einem anderen Package heraus (in meinem Fall bspw. Klasse "Main") etwas in die Liste des MainWindow hineinlegen möchte, also eine Methode des Objektes des abstrakten Listenmodells aufrufen möchte (hier z.B.: addKunde()), ist diese natürlich nicht sichtbar, weil das ListenModel ja eine private Unterklasse von "MainWindow" ist.
Wäre es noch "guter Stil" die Klasse des AbstractListModels public zu machen, damit sie von außen sichtbar ist? Oder Sollte ich Sie generell aus der Klasse "MainWindow" herausnehmen?
Wie würdet Ihr hier den Zugriff, bzw. die Klassenorganisation auf solche Datenlisten in GUIs realisieren?
Achso, es handelt sich um eine Übungsaufgabe, deswegen ist die Datenhaltung hier nicht in Datenbanken oder Dateien vorgesehen, sondern die Listen halten alle Daten zur Laufzeit.
Vielen Dank für Hilfe!
Pseudo-Code:
Code:
/**
* ###############################
* Package: gui
* ###############################
**/
public class MainWindow extends JFrame{ // Instanzvariable des Listenmodells
private KundenListData kundenDat;
// Zugriff auf Listenmodell
public KundenListData getKundenDat() {
return kundenDat;
}
// Konstruktor für das Hauptfenster der Anwendung
public MainWindow(){ // ...
}
private class KundenListData extends AbstractListModel{ // Instanzvariable LinkedList, dass die Kundendaten speichert: private LinkedList<Object>llKundenData;
// Methode zum hinzufügen eines Kunden:
public void addKunde(Kunde k){
llKundenData.addLast(k);
fireContentsChanged(this, 0, llKundenData.size()-1);
}
// Weitere Methoden...
}
/**
* ###############################
* Package: Kontoverwaltung
* ###############################
**/
package kontoverwaltung;
import gui.MainWindow;
public class Main {
private static boolean legeAnZufallsKunden(MainWindow owner){Kunde k = new Kunde("123453", "horst");
owner.getKundenDat().addKunde(k);
}
}