Mehrere JFrames in eigenen Klassen und Dateien?

  • Themenstarter Themenstarter DirkNienhaus
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
D

DirkNienhaus

Gast
Hi,

ich möchte eine Anwendung erstellen in der es ein MainFrame gibt. Aus diesem Frame können, durch Buttonevents andere "SubFrames" aufgerufen werden. (Die Frames habe ich mit Jigloo erstellt)

Nun meine Fragen:
- Erstellt man sinnvoller Weise für jedes Fenster eine eigene Datei?
- Wo werden die Instanzen der Klassen für die "SubFrames" erstellt? Schon bei der Initialisierung der MainFrame, oder erst im Event des Buttons?
- Ist es richtig, wenn ich aus dem MainFrame mit folgendem Code den SubFrame öffne?
Code:
this.setVisible(false);
frameSub.setVisible(true);
- Nun die blutige Anfängerfrage: Wie greife ich dann aus dem SubFrame aufs Mainframe zu um das SubFrame zu schließen und das MainFrame wieder zu öffnen?
Code:
this.setVisible(false);
frameMain.setVisible(true);

Ihr merkt ich bin ziemlicher Java Anfänger - ich habe bis jetzt noch nicht viel mit GUI Entwicklung zu tun gehabt (unter Java). Es wäre super, wenn Ihr mir vielleicht ein paar Fragen beantworten könntet.

--
Gruß
Dirk
 
DirkNienhaus hat gesagt.:
- Erstellt man sinnvoller Weise für jedes Fenster eine eigene Datei?
Man erstellt für jede eigene Klasse eine Datei. Es zwingt dich aber niemand, die Frames per Vererbung aufzubauen, du könntest z.B. auch nur Panels machen, und die dann vor dem Öffnen noch kurz auf ein Frame pappen.

DirkNienhaus hat gesagt.:
- Wo werden die Instanzen der Klassen für die "SubFrames" erstellt? Schon bei der Initialisierung der MainFrame, oder erst im Event des Buttons?
Egal, hauptsache du speicherst die erstellten Subframes und verwendest sie mehr als einmal.
Bei der Initialisierung: das Programm startet lange, aber zeigt die Frames schnell an.
Beim Event: Das Programm startet schnell, aber die Buttons reagieren träge.
Ganz raffiniert wäre es, die Frames nach dem Start mit einem neuen Thread herzustellen.

- Ist es richtig, wenn ich aus dem MainFrame mit folgendem Code den SubFrame öffne?
Code:
this.setVisible(false);
frameSub.setVisible(true);
Jop

- Nun die blutige Anfängerfrage: Wie greife ich dann aus dem SubFrame aufs Mainframe zu um das SubFrame zu schließen und das MainFrame wieder zu öffnen?
Code:
this.setVisible(false);
frameMain.setVisible(true);
Durch Referenzen, mehr dazu hier.

Bevor du deine Frames schreibst, möchte ich dir noch ein Blick auf die Klasse "(J)Dialog" empfehlen. Damit kann man Fenster machen, welche das Hauptfenster kurzzeitig blockieren.
 
Hui, das war ja mal eine Superantwort in einer Superzeit 🙂 Danke!

du könntest z.B. auch nur Panels machen, und die dann vor dem Öffnen noch kurz auf ein Frame pappen.
Hm, das muss ich mir noch überlegen - verstehe ich noch nicht ganz...

Bei der Initialisierung: das Programm startet lange, aber zeigt die Frames schnell an.
Beim Event: Das Programm startet schnell, aber die Buttons reagieren träge.
Ganz raffiniert wäre es, die Frames nach dem Start mit einem neuen Thread herzustellen.
Ja, ok. Das leuchtet ein!

Durch Referenzen, mehr dazu hier.
Hätte ich deinen Beitrag vor meinem Post hier gefunden, hätte sich einiges erübrigt. Aber jetzt funktionert es und ist ja auch absolut klar (hinterher ist man immer schlauer 🙂 )

Bevor du deine Frames schreibst, möchte ich dir noch ein Blick auf die Klasse "(J)Dialog" empfehlen. Damit kann man Fenster machen, welche das Hauptfenster kurzzeitig blockieren.
Aber ein Dialog ist doch nur sinnvoll, wenn das Hauptframe nur kurz verlassen wird. Also zu Eingaben oder Meldungen, oder?

--
Gruß
Dirk
 
Anonymous hat gesagt.:
du könntest z.B. auch nur Panels machen, und die dann vor dem Öffnen noch kurz auf ein Frame pappen.
Hm, das muss ich mir noch überlegen - verstehe ich noch nicht ganz...
Deine Klassen haben die Form "class X extends JPanel{...}", und wenn du eines anzeigen willst, erstellst du ein JFrame, und fügst die Panelklasse hinzu ("jframe.add( einFrüherErstelltesX );"). Das ist ein bisschen flexibler als gleich ganze Frames zu basteln (man könnte dann z.B. Panels miteinander kombinieren...).

Bevor du deine Frames schreibst, möchte ich dir noch ein Blick auf die Klasse "(J)Dialog" empfehlen. Damit kann man Fenster machen, welche das Hauptfenster kurzzeitig blockieren.
Aber ein Dialog ist doch nur sinnvoll, wenn das Hauptframe nur kurz verlassen wird. Also zu Eingaben oder Meldungen, oder?
Ja. Aber deine Anwendung hörte sich für mich auch etwa so an (und ich wusste nicht, ob du den Dialog schon kennst :wink: )
 
Deine Klassen haben die Form "class X extends JPanel{...}", und wenn du eines anzeigen willst, erstellst du ein JFrame, und fügst die Panelklasse hinzu ("jframe.add( einFrüherErstelltesX );"). Das ist ein bisschen flexibler als gleich ganze Frames zu basteln (man könnte dann z.B. Panels miteinander kombinieren...).
Ah jetzt ja. Gar nicht so dumm 😉

Also nochmal vielen Dank für die Hilfe!

--
Gruß
Dirk
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben