Wie gehen Sie zurück zu einer JFrames in Java
Ich habe eine Schaltfläche in einem JFrame, wenn gedrückt, es führt uns zu einem anderen frame.
Ich habe diesen code:
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
SecondForm secondform = new SecondForm();
secondform.setVisible(true);
setVisible(false);
dispose();
}
Also der neue frame öffnet und alles ist ok. Dann legte ich eine weitere Schaltfläche in das zweite Bild, um zurück zu den vorherigen frame. Ich habe diesen code:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
MainForm Mform = new MainForm();
Mform.setVisible(true);
setVisible(false);
dispose();
}
Die Sache ist, ich glaube nicht, dass dies der richtige Weg ist, dies zu tun. Was ich will ist:
- verstecken das erste Bild
- zeigen die neue zweite
- entsorgen Sie die zweite
- zeigen wieder die ersten
Gibt es eine Möglichkeit, das zu tun, mit dem ersten MainForm Instanz und nicht eine neue erstellen jedes mal, wenn ich zurück gehen möchte.
Ich überwacht mein Programm und jedes mal, wenn ich hin und her gehen die frames und wie ich vermutete, der ram verwendet wird, indem es immer größer.
Vielen Dank im Voraus.
EDIT : ich habe ein login-system, und wenn der Benutzer setzen Sie die richtigen Anmeldeinformationen ein neues ManiForm-Instanz erstellt.
MainForm Mform = new MainForm();
Mform.setVisible(true);
Dass die Instanz ist, die ich verwenden möchten. Ii es gibt einen Weg, um MForm wieder sichtbar aus dem secondform?
Erstmal danke für die Hilfe!
Ich bin damit einverstanden, dass es einfacher ist, nicht zu verwenden mehr als eine JFrames, aber können Sie mir bitte sagen, welche ist die bessere Weise, das zu tun, was ich gefragt habe das im ersten post?
Die Antwort Robin mir gegeben hat, sehr schön, aber ich weiß nicht, was zu setzen, da ein argument, da*:
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
* new SecondForm().setVisible(true);
}
});
Es ist aus der auto-generierten code von NetBeans.
Versuchte ich
new SecondForm(super).setVisible(true);
aber ich bekomme immer noch Fehler bei der Kompilierung. Anscheinend muss ich setzen super.something()
aber ich weiß nicht, was. Ich habe versucht, viele, aber kein Glück.
vereinbart. Oder öffnen Sie einen neuen dialog, aber zumindest das ursprüngliche Hauptfenster der Anwendung sichtbar und aktiv
InformationsquelleAutor Christos Baziotis | 2012-01-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
sollten Sie nicht verwenden mehr als einen frame.
Sollten Sie NICHTS in JFrame außer defaultExitOperation, Größe, preferedsize und sichtbar wahr.
Legen Sie stattdessen alle Tasten und Felder in ein JPanel und hinzufügen/entfernen von JPanel dem JFrame.
Wenn Sie wollen, ein weiteres Fenster zu öffnen, verwenden Sie JDialog.
btw: Sie können sich Ihre MainFrame setVisible-Methode false und öffnen eines JDialog mit Ihrer MainFrame-als Elternteil. Nur wenn jemand schreibt das Recht user + Passwort, die Sie machen das MainFrame sichtbar.
InformationsquelleAutor MartinL
Wenn Sie Ihre
MainForm
zu denSecondForm
- Klasse (zum Beispiel mit einem Konstruktor-parameter) dieSecondForm
Instanz kann die original -MainForm
Instanz wieder sichtbar, anstatt ein neues zu erstellen.Beispielsweise
und in Ihrem
MainForm
KlasseCheck meinen ersten post nochmal. Ich fügte hinzu, einige Dinge...
Ich habe Ihre post und meine Antwort steht immer noch. Geben Sie einfach die
MainForm
Instanz derSecondForm
Klasse. Und starten Sie dann das Lesen der anderen Antworten und Kommentare zu entscheiden, ob Sie tatsächlich wollen würde austauscht, framesOk. Jetzt verstehe ich. Eine Letzte Sache. Ich benutze NetBeans und es generiert automatisch code. Meine Antwort ist, was bringe ich als argument in SecondForm() gibt es?
/* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new SecondForm().setVisible(true); } });
Mache ich auch, super'?
InformationsquelleAutor Robin
Für swing-Anwendungen, die standard ist für die Verwendung einer STATISCHEN MAIN-FRAME, mit anderen Worten, machen Sie Ihre main-frame (mframe) statische und Methoden hinzufügen, um pop-up neue frames, Dialoge, optionPanes, etc. Sie können sogar Steuern Sie die Sichtbarkeit der Haupt-frame werfen statische Aufrufe. Das ist die Weise, die Sie implementieren einen EINZIGARTIGEN RAHMEN für Ihre Anwendung, auch tho Sie Beispiel andere frames für die navigation, alle untergeordneten frames können auf die Haupt-frame, ohne die Notwendigkeit der übergabe als parameter für Konstruktoren oder erstellen von neuen Instanzen.
Die Main-Klasse
`/* start der Anwendung */
`
Die Main-Frame -
`/* erstellen der Haupt frame */
`
Untergeordneten frame
`/* öffnen des untergeordneten frames Steuern die Sichtbarkeit der Haupt frame*/
`
aber auf jeden Fall nicht, was Sie gewöhnlich tun, in einer swing-Anwendung 😉
hi kleopatra, konnte Sie klären, "in der Regel nicht tun, in einer swing-app"? Ich würde sagen, das ist ganz typisch, oder bin ich da falsch in einer solchen Aussage?
Singletons sind böse immer 🙂 weiß nicht, wie Sie erreicht die STANDARD - nie gesehen, ernsthaft-app (noch nicht einmal die triviale tutorial Beispiele, die zeigen viele suboptimale Dinger)
Ok, ich Stimme mit "singletons sind böse" und es mag nicht weit verbreitet sein und nicht missbraucht werden - der Missbrauch auf singletons verwandelt Sie in böse. Vielleicht newbies gemacht haben, den Missbrauch von singletons ziemlich viel, also haben wir Verständnis, aber es ist nützlich in sehr spezifischen Fällen, und diese tut es nicht wirklich ein großes Loch in gemeinsamen Praktiken - natürlich ein "Factory" - Muster wäre eleganter, aber es macht es nicht falsch, richtig? 😉
InformationsquelleAutor McLoh