JFrame abfragen ob es geschlossen wird?
Hey Leute,
Ich möchte für die Schule ein Programm schreiben bei dem wenn man ein JFrame schließt zwei neue an einer Random Position des Bildschirms geöffnet werden.Soweit ist auch alles klar aber ich habe keine Ahnung wie ich schauen kann ob jemand versucht den Task zu beenden sprich alt F4 drücken oder halt auf das kreuzchen Kann mir da vielleicht jemand helfen?
2 Antworten
Viel Spaß damit:
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
public class FunWithFrames implements WindowListener {
public static void main(String[] args) {
new FunWithFrames();
}
public FunWithFrames() {
JFrame frame = new JFrame();
frame.addWindowListener(this);
frame.setSize(800, 600);
frame.setTitle("fun with frames");
frame.setVisible(true
);
frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
}
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
System.out.println("yep, someone clicked on close");
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
}
@Override
public void windowActivated(WindowEvent e) {
}
@Override
public void windowDeactivated(WindowEvent e) {
}
}
Denke Du kannst die nötigen Infos da raus ziehen um deine Ziele umzusetzen.
Wichtig ist der WindowListener. Der Code ist natürlich nicht schön sondern zeigt einfach, das Wie.
Gruß
Ohje.
Du kannst ja das Interface (WindowListener) von einer Art Steuerungsklasse implementieren lassen. Dann ist die Funktionalität schön gekapselt.
Statt frame.addWindowListener(this) hast Du dann frame.addWindowListener(windowControl)
Wobei windowControl dann deine Steuerungsklasse ist, welche den WindowListener implementiert.
Gruß
Obwohl Alt F4 sollte ja nicht dass Problem sein dass könnte ich ja durch einen Key Listener abfragen , da ich eh ne Tastenkombination machen will um die JFrames zu löschen!
Aber ich hab immer noch keine Ahnung, wie ich etwas ausführen kann, wenn ich dass Rote Kreuz oben links Drücke
Dankeschön, dass traurige ist der Code ist immer noch schöner als meiner :)