Hallo Leute,
ich brauche ein wenig Hilfe. Bin unerfahren in Java und gerade dabei eine GUI zu entwickeln. Konnte mir mitHilfe von diversen youtube-Videos schon einiges aneignen aber bei einem Punkt komme ich gerade nicht weiter.
Ich habe ein Frame mit einem Button. Klickt man auf den Button, öffnet sich ein anderer Frame[newFrame] (War mir hier nicht sicher, ob es an der Stelle egal ist, ob ich ein JDialog oder JFrame nehme? Habe als Unterschied nur gesehen, dass man den JDialog modal setzen kann aber das spielt bei mir keine Rolle - gibt es noch einen anderen Vorteil von einem JDialog?)
Mein Zwischenziel ist, dass wenn ich das neue Frame[newFrame] schließe (per klick auf das x), das alte Frame wieder erscheint und das neue Frame geschlossen wird.
Ich habe also eine Unteklasse erstellt, die das Verhalten des Listeners vom Button beschreibt. Hier habe ich ein neuen Frame erstellt und diesem Frame noch das addWindowListener zugefügt, damit ich die gewünschte Funktionalität einfügen kann. Also wieder eine Unterklasse, die den WindowListener beschreibt. Hier habe ich jetzt die Methode windowClosing(WindowEvent e) benutzt und mit setVisible(true) erreicht, dass mein Ursprungsframe wieder erscheint. Jetzt habe ich versucht mit newFrame.setVisible(false) zu arbeiten, was aber anscheinend nicht geht. Wie kann ich das machen?
Hier noch mein Code zum Verständnis…
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JFrame;
public class UnserFrame extends JFrame {
JLabel text;
JButton button;
public UnserFrame(){
setSize(500,350);
setTitle("Bedienung - LEDs");
setLocationRelativeTo(null); //Fenster wird mittig geöffnet
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(null);
text = new JLabel("Die Wunder der Beleuchtung");
text.setBounds(50, 15, 500, 30);
Font schrift = (text.getFont().deriveFont(Font.BOLD + Font.ITALIC, 25)); //Schriftart (hier Standardschriftart , Type, Größe
text.setFont(schrift);
add(text);
button = new JButton("Klick mich");
button.setBounds(50, 50, 100, 25);
button.addActionListener(new UnserListener());
add(button);
}
private class UnserListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
JFrame newFrame = new JFrame();
newFrame.setVisible(true);
newFrame.setLocation(500,500);
newFrame.setSize(500,350);
newFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
newFrame.addWindowListener(new WindowHandler());
setVisible(false);
/*JDialog newDialog = new JDialog();
newDialog.setVisible(true);
newDialog.setLocation(500,500);
newDialog.setSize(500,350);
newDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE);
setVisible(false);*/
}
private class WindowHandler implements WindowListener{
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent e) {
setVisible(true);
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
}
}
}}