manu: EIN fenster schliessen

Hallo liebe Leute,

ich habe eine Frage, ich öffne mit meinem Programm ein Fenster (Frame) und mit einem Menü im Fenster (Frame) ein weiteres. Nun ist es so, wenn ich nur das zweite schliessen möchte, so schliessen sich beide! Wie kann ich es anstellen, dass sich nur das eine schliesst wenn ich auss kreuzlein obenrechts klicke?

Mein CFensterLauscher:
-------------------------------------------------------
import java.awt.event.*;

public class CFensterLauscher extends WindowAdapter
{
   public void windowClosing(WindowEvent e)
   {
      System.exit(0);
   }
};
-------------------------------------------------------

In der anderen Klasse:
-------------------------------------------------------
addWindowListener(new CFensterLauscher());
-------------------------------------------------------

Mit freundlichen Grüssen
manu

  1. Guude!

    public void windowClosing(WindowEvent e)
       {
          System.exit(0);
       }

    Ein "System.exit(0)" veranlasst die JVM sich selbst zu beenden, insofern schließen sich beide Fenster. Wenn Du möchtest, dass sich nur das eine Fenster schließt, verwende die Methoden "dispose()" und "setVisible(false)":

    public void windowClosing(WindowEvent event) {
       event.getWindow().setVisible(false);
       event.getWindow().dispose();
    }

    Etwas universeller kannst Du Deinen WindowAdapter gestalten, indem Du in seinem Konstruktor einen Boolean-Wert übergibst, der bestimmt, ob die JVM beendet werden soll:

    import java.awt.event.*;

    public class CFensterLauscher extends WindowAdapter {

    private boolean exitSystem;

    public WindowClosingAdapter(boolean exitSystem) {
          this.exitSystem = exitSystem;
       }

    public void windowClosing(WindowEvent event) {
          event.getWindow().setVisible(false);
          event.getWindow().dispose();
          if(exitSystem) {
             System.exit(0);
          }
       }
    }

    Für das Fenster Deiner Hauptanwendung registrierst Du den WindowAdapter mit "addWindowListener(new CFensterLauscher(true))", für das zweite Fenster entsprechend mit "false".

    LG ausm Hesseland
    Lemmy

    --
    Wer seiner Frau gegenüber stets beteuert, dass DAS tatsächlich 30cm sind, darf sich nicht wundern, wenn sie nicht richtig einparken kann...