2016-07-10 21 views
0

Ich habe 5 jFrames in meinem Java-Projekt. Und ich möchte wie ein Hauptmenü machen.Öffne Elemente und Struktur von jFrame in einem anderen wie ein Menü

Ich meine, ich möchte, dass das Programm mit einem JFrame beginnt und wenn ich auf eine Schaltfläche insteand des Öffnens des JFrame klicken, werden alle Elemente wie Beschriftungen, Schaltflächen und Tabellen in meinem HauptjFrame angezeigt. Und wenn ich andere Taste klicke, wird der Hauptrahmen sauber und lädt andere Jframe.

Es ist möglich? Ich programmiere mit Java jdk 8 und Netbeans. Danke

Edit: Ich denke, wer markiert duplizierten meine Frage nicht verstanden. Ich möchte den Rahmen oder andere Rahmen nicht öffnen oder schließen, ich möchte die Struktur und die Komponenten von mehreren in demselben Rahmen laden. Bitte lesen Sie meine Frage, bevor Sie zu klagen beginnen, die dupliziert wird

+0

Lesen Sie auch [Die Verwendung von mehreren JFrames, gute/schlechte Praxis?] (http://stackoverflow.com/questions/9554636), bevor Sie mit diesem Design fortfahren. –

+0

Ich denke, wer doppelt gekennzeichnet hat, hat meine Frage nicht verstanden. Ich möchte den Rahmen oder andere Rahmen nicht öffnen oder schließen, ich möchte die Struktur und die Komponenten von mehreren in demselben Rahmen laden. Bitte lesen Sie meine Frage, bevor Sie sich beschweren, die dupliziert ist –

+0

@HovercraftFullOfEels Sie haben missverstanden. Der Fragesteller sucht nicht nach einem neuen JFrame, sondern ändert den Inhalt des aktuellen JFrames, als wäre es ein neuer. –

Antwort

1

ich habe 5 jFrames in meinem Java-Projekt.

Und das ist ein Problem.

Und ich möchte wie ein Hauptmenü machen. Ich meine, ich möchte, dass das Programm mit einem JFrame startet und wenn ich auf eine Schaltfläche klicke und den JFrame öffne, werden alle Elemente wie Labels, Buttons und Tabellen in meinem Principal JFrame angezeigt. Und wenn ich auf eine andere Schaltfläche klicke, wird der Hauptrahmen gereinigt und lädt andere Jframe.

Ja, das kann, indem man die contentPane (in der Regel ein JPanel) aus dem JFrame, deren Inhalt Sie in der aktuell angezeigten JFrame angezeigt werden gelöst werden, und es die contentPane des angezeigten JFrame zu machen, zum Beispiel:

Aber diese zusätzliche Gymnastik ist sperrig, anfällig für Fehler und unnötig. Sie maskieren sich in einer Ecke, indem Sie Ihre Klasse JFrame erweitern und Sie zwingen, JFrames zu erstellen und anzuzeigen, wenn oft mehr Flexibilität erforderlich ist. In der Tat würde ich wagen, dass die meisten der Swing GUI-Code, den ich erstellt habe und den ich gesehen habe, nicht JFrame zu erweitern, und in der Tat ist es selten, dass Sie jemals dies tun möchten. Häufiger sind Ihre GUI-Klassen darauf ausgerichtet, JPanels zu erstellen, die dann in JFrames oder JDialogs oder JTabbedPanes eingefügt oder über CardLayouts ausgetauscht werden können, wo immer dies erforderlich ist. Dies erhöht die Flexibilität Ihrer GUI-Codierung erheblich.

Für diese Situation, was ich empfehlen, dass Sie tun, dass Ihre GUI-Klassen JPanels erstellen, und dass Sie diejenigen, die Sie zu einem JPanel, das ein CardLayout verwendet, tauschen möchten. Und dann, wann immer Sie eine andere "Karte" zeigen möchten, rufen Sie show(...) auf dem CardLayout-Objekt auf, übergeben Sie die JPanel, die es verwendet, sowie den String-Schlüssel, der beim Hinzufügen der "Karte" JPanel zum CardLayout-JPanel verwendet wurde . Dies ist alles in der CardLayout Tutorials gut erklärt.

Weitere nützliche Links:

+1

Problem gelöst. Mit CardLayout –

+0

@ MK_03: Yay! Ich bin froh, dass du es geschafft hast. –