Controller pro Frame?

xerion21

Mitglied
Hallo zusammen,

ich habe momentan folgendes Problem:

Ich habe eine recht komplexe Anwendung mit mehreren Frames. Die jeweiligen Frames werden von dem jeweiligen anderen Frame aufgerufen und ggf. Daten mit übergeben.

Nun habe ich das wie folgt verwirklicht:

Ich habe pro Frame einen Controller geschrieben, in dem das Frame drin liegt und dieses komplett einrichtet und die Listener dem Frame zur Verfügung stellt. Des Weiteren hat jeder dieser Controller eine Verbindung zu einer Datenbank um die Frames ggf. mit Inhalt zu füllen.

Jedoch braucht das Aufrufen eines neuen Frames (mit Controller) recht lange, gefühlt 1-2 Sekunden. Ich weiß leider nicht woran das liegt. Ich werde heute abend nochmal tests durchlaufen und die Zeit davon messen.

Aber was mich interessiert: Ist die Idee mit den einzelnen Controllern pro Frame falsch? Wie kann ich das besser umsetzen? Und kann jmd direkt ins blaue hinein raten, wieso die Frame-Erstellung so lange dauert?
 

Joose

Top Contributor
Das kommt ganz darauf an was du bei der Frame Erstellung machst.
Wieviel UI Elemente werden erzeugt die am Anfang nicht sichtbar sind? Wieviele Daten werden aus der DB geladen?

Grundsätzlich kann man sagen 1 Controller pro Frame hört sich nicht schlecht an. Was sich schlecht anhört: "hat jeder dieser Controller eine Verbindung zu einer Datenbank ....". Es sollte eine einzige Verbindung reichen an einer zentralen Stelle.

Schau dir diesbezüglich mal das MVC Pattern an :)
 

xerion21

Mitglied
Das kommt ganz darauf an was du bei der Frame Erstellung machst.
Wieviel UI Elemente werden erzeugt die am Anfang nicht sichtbar sind? Wieviele Daten werden aus der DB geladen?

Es werden keine UI-Elemente erzeugt, welche nicht sichtbar sind. Es ist nur eine JTable, in der jeweils der View aus der DB dargestellt wird.

Momentan sind es sogar nur 10 Datensätze, die aus der DB geladen wird, welche ca 30 Properties hat. Sollte eigentlich kein Problem sein. Ich erzeuge nach dem einlesen eine neues DataModell und füge es der JTable hinzu.

Grundsätzlich kann man sagen 1 Controller pro Frame hört sich nicht schlecht an. Was sich schlecht anhört: "hat jeder dieser Controller eine Verbindung zu einer Datenbank ....". Es sollte eine einzige Verbindung reichen an einer zentralen Stelle.

Ich habe einen Datenbank-Connector angelegt. Dieser wird bei jedem Frame als neue Property erzeugt also im Konstruktor:

Java:
public Konstruktor() {
db = new DatabaseConnector();
}
 

Joose

Top Contributor
Wie gesagt schau dir das MVC Pattern mal. So in der Art hast du es ja anscheinend schon implementiert.

Wegen der Perfomance verwende dazu lieber einen passenden Profiler :) das geht genauer als mit Konsolen-/Logausgaben
 

xerion21

Mitglied
Wie gesagt schau dir das MVC Pattern mal. So in der Art hast du es ja anscheinend schon implementiert.

Wegen der Perfomance verwende dazu lieber einen passenden Profiler :) das geht genauer als mit Konsolen-/Logausgaben

ich habe das schon in der art MVC verwirklicht. wobei ich die Observer-Sache noch nicht brauche.
ja ich lass mal die Zeit später stoppen und mal schauen, was da genau so lange braucht...
 

xerion21

Mitglied
so ich habe nun mal nachgeschaut, woran es liegt, dass die Anwendung so langsam läuft.
Die Erstellung des DB-COntroller dauert immer eine halbe Sekunde, genauso lange wie das erstellen des Frames.
Die Frage die ich mir stelle ist:
Wie bekomme ich es hin, dass ich wirklich nur ein DB-Controller pro Anwendung brauche und diesen an die jeweiligen Controller weitergeben kann, ohne diese instanzieren zu müssen?
 

Joose

Top Contributor
Entweder reichst du den DB-Controller immer weiter (getter/setter), du verwendest Injection (Informationen dazu bitte googeln) oder die schlechteste Variante wäre ein Singleton (sollte wirklich vermieden werden, erwähne ich nur Vollständigkeitshalber)
 

xerion21

Mitglied
Entweder reichst du den DB-Controller immer weiter (getter/setter), du verwendest Injection (Informationen dazu bitte googeln) oder die schlechteste Variante wäre ein Singleton (sollte wirklich vermieden werden, erwähne ich nur Vollständigkeitshalber)

Das mit Setter und Getter habe ich mir schon gedacht, aber ich dachte das wäre unsauber.
Ok ich konnte somit die Zeit um die Hälfte reduzieren. Nun dauert es aber immer noch eine halbe Sekunde, bis sich das Frame aufbaut...
 

xerion21

Mitglied
ok habe es nun wie folgt gemacht:
beim Starten des Programms werden die Frames alle geladen. Danach werden dem Conroller einfach die Frames mitgegeben.

Denn momentan brauche ich immernoch fast 1 Sekunde zum Erstellen der Frames
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Service oder Controller Allgemeine Java-Themen 6
M Best Practice MVC- Was gehört in den Controller? Allgemeine Java-Themen 1
K Java FX Zu startenden FXML-Controller per Parameter wählen Allgemeine Java-Themen 2
K GUI-Entwicklung - Dispose, enabling und mehrere Controller Allgemeine Java-Themen 1
H Model-View-Controller Fail? Allgemeine Java-Themen 31
M Model View Controller Entwurfsmuster! Allgemeine Java-Themen 11
D GUI-Controller Konzept Allgemeine Java-Themen 6
J Model View Controller Architektur Allgemeine Java-Themen 6
O Formularinhalte der jsp in Controller nicht greifbar Allgemeine Java-Themen 2
B MVC: controller in unabhängigen thread von der view starten (gui friert ein) Allgemeine Java-Themen 5
T MVC - Controller verbessern Allgemeine Java-Themen 9
Y Exception Handling - Controller-Businesslogik-Persitenz Allgemeine Java-Themen 7
G Problem mit MVC-Pattern (Controller als anonyme Unterklasse) Allgemeine Java-Themen 2
N XInput API (DLL für XBox 360 Controller) mit Java benutzen? Allgemeine Java-Themen 3
K MVC - Kommunikation Controller <> Gui Allgemeine Java-Themen 5
D Controller für GUI (MVC) Allgemeine Java-Themen 6
J Mein Frame friert ein beim Uploaden Allgemeine Java-Themen 4
G Input Frame Allgemeine Java-Themen 6
Y Wie kann ich ein erstelltes JPanel meinem Frame hinzufügen? Allgemeine Java-Themen 1
MaxG. Swing Frame schließen Allgemeine Java-Themen 9
A BlueJ Java Frame Java Editor --> Bluej / String title Allgemeine Java-Themen 8
S Bild in Frame Allgemeine Java-Themen 0
T Code durch eigenes Frame pausieren (ähnlich JDialog) Allgemeine Java-Themen 4
D Player Objekt - Frame über Server anzeigen lassen. Allgemeine Java-Themen 3
R Nullpunkt im Frame Allgemeine Java-Themen 4
J Swing Frame schließt ganzes Programm(Jasperreport) Allgemeine Java-Themen 6
J Runtime.exec setzt Fokus auf Frame Allgemeine Java-Themen 2
N Protocol Frame/Applet Allgemeine Java-Themen 4
A Frame nur Anwendungsweit in Vordergrund Allgemeine Java-Themen 2
Z Mit ActionListener in anderem Frame lauschen? Allgemeine Java-Themen 3
M Nochmal I-Frame zu Image Allgemeine Java-Themen 4
borobudur Find a AWT frame in SWT Allgemeine Java-Themen 4
S Von Frame zu Frame Allgemeine Java-Themen 7
D Kreis Rundes Frame Allgemeine Java-Themen 16
E "runder" Frame Allgemeine Java-Themen 9
G Kompletten Frame mit allen Objekten resizen Allgemeine Java-Themen 10
ARadauer mit keylistener hören auch wenn frame nicht den focus hat Allgemeine Java-Themen 2
G HTML-Seite im Frame Anzeige? Allgemeine Java-Themen 3
G Kontrolllampe im Frame Allgemeine Java-Themen 4
C Tastatureingabe in einem Frame abfragen Allgemeine Java-Themen 2
L Spielerei: Frame rekursiv darstellen Allgemeine Java-Themen 3
L Objekt in einem Frame wird im anderen benötigt Allgemeine Java-Themen 5
A mein Frame wird nicht schnell genung aktualisiert Allgemeine Java-Themen 7
G Fenster/Frame schließen Allgemeine Java-Themen 16
R Window statt Frame Allgemeine Java-Themen 6
R KeyListener ohne Frame und Applet Allgemeine Java-Themen 7
B Frame schließt sich aber VM bleibt am Leben Allgemeine Java-Themen 3
J Exception-Frame Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben