Marshallbbw
Erfahrenes Mitglied
Hallo Leute,
ich möchte gerne ein Frame schliessen ohne gleich das ganze system zu beenden. Habe schon versucht dispose() zu nutzen in der Hoffnung, dass das Frameobjekt zerstört wird oder so. Klappt aber nicht. Hier mal ein Beispiel bei dem subFrame geschlossen werden soll aber mainFrame eben nicht (ist nur ein vereinfachtest Bsp.). Wenn man mit dispose() arbeitet und vorher im Textfeld was eingibt dann wird das wieder angezeigt wenn man nochmal ein subFrame anzeigen will. Problem ist nur dass ich nicht jedesmal beim Klick ein neues JFrame-Objekt erstellen will und kann - also sollte das Attribut private static JFrame subFrame = new JFrame(); schon deklariert bleiben. Ich hoffe ihr habt mich verstanden
ich möchte gerne ein Frame schliessen ohne gleich das ganze system zu beenden. Habe schon versucht dispose() zu nutzen in der Hoffnung, dass das Frameobjekt zerstört wird oder so. Klappt aber nicht. Hier mal ein Beispiel bei dem subFrame geschlossen werden soll aber mainFrame eben nicht (ist nur ein vereinfachtest Bsp.). Wenn man mit dispose() arbeitet und vorher im Textfeld was eingibt dann wird das wieder angezeigt wenn man nochmal ein subFrame anzeigen will. Problem ist nur dass ich nicht jedesmal beim Klick ein neues JFrame-Objekt erstellen will und kann - also sollte das Attribut private static JFrame subFrame = new JFrame(); schon deklariert bleiben. Ich hoffe ihr habt mich verstanden
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JTextField;
public class CloseDemo
{
private static JFrame subFrame = new JFrame();
public static void main(String[] args)
{
JFrame mainFrame = new JFrame("mainFrame");
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainFrame.setSize(100, 100);
mainFrame.setLayout(new BorderLayout());
JButton myButton = new JButton("subFrame");
myButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent myEvent)
{
System.out.println("show subFrame");
subFrame.setTitle("subFrame: " + System.currentTimeMillis());
subFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
subFrame.setSize(400, 400);
subFrame.toFront();
subFrame.setLayout(new BorderLayout());
subFrame.add(new JTextField(), BorderLayout.NORTH);
subFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // oder DISPOSE_ON_CLOSE
subFrame.setVisible(true);
}
});
mainFrame.add(myButton, BorderLayout.CENTER);
mainFrame.setVisible(true);
}
}