Frame schließt gleich alle Frames

Dasha

Mitglied
Hi,

Ich habe hier den Kopf einer gegebene Klasse die ein Fenster erzeugt.
Ich rufe über meine Anwendung diese Klasse auf und das Fenster wird gezeichnet.
Aber wenn ich dann rechts oben das Fenster schließen will, wird auch mein Fenster geschlossen.
Ich verstehe nicht wirklich warum. Eventuell ist es aus dem Code hier ersichtlich oder gibt es irgendwelche Schlüsselworte die ich im Code suchen kann?

Java:
public class Zeichenflaesche
{
  private JFrame frame;
  private Container container;
  private JScrollPane scrollPane;

  private boolean windowExited = false;
  private WindowListener closeListener;
  private double minX;
  private double maxX;
  private double minY;
  private double maxY;
  private JComponent graphicalComponent = new DrawingArea();


  public Zeichenflaesche
  {

    .....

    this.closeListener = new WindowAdapter()
    {
      public void windowClosing(WindowEvent e)
      {
        Zeichenflaesche.this.windowExited = true;
        System.exit(0);
      }
    };
    initFrame();
  }

public void initFrame()
  {
    this.frame = new JFrame("Zeichenfläsche");
    this.frame.setResizable(false);
    this.container = this.frame.getContentPane();
    this.container.setLayout(new BorderLayout());
    this.scrollPane = new JScrollPane(this.graphicalComponent);
    this.scrollPane.getViewport().setBackground(Color.BLACK);
    this.graphicalComponent.setForeground(Color.GREEN);
    this.container.add(this.scrollPane, "Center");
    this.frame.setSize(860, 630);
    this.frame.setLocation(300, 0);
    this.frame.addWindowListener(this.closeListener);
    this.frame.setVisible(true);
    this.graphicalComponent.repaint();
  }
...

mfg
 
Java:
 System.exit(0);
Du rufst das auf, wenn dein Frame geschlossen wird.
Du solltest mal lesen, was genau der Aufruf macht.
 
Ach, System.exit(0) schließt gleich das gesamte Programm.
Man sollte vorher echt mal kurz lesen was die Befehle genau machen :-\
Jetzt ist mir auch klar warum mein Fenster das andere Fenster nicht schließt.

An der Stelle gleich mal eine andere Frage:
Wie schließt man in Java ein Fenster korrekt?
In anderen Sprachen löscht/schließt (close) man es und entfernt es dann aus dem Speicher (dispose).

Wäre das in jave diese Kombination?
frame.setVisible(false);
frame.dispose();

Dispose schließt bei mir zwar auch schon das Fenster aber Mr. Internet meint das setVisible muss noch rein (was ich bezweifle).

Edit: ich hab jetzt schon probiert das Fenster zu schließen und wieder ein neues zu öffnen aber es bleibt immer was im Prozessmanager zurück.

mfg
 
Zuletzt bearbeitet:
Zeichenflaesche ... schon fast unterhaltsam, in Anlehnung an Kleinsche Flasche ? Wikipedia

Wenn man ein einzelnes Fenster schließen will, sollte es
f.setVisible(false);
f.dispose();
tun. Wenn ALLE Fenster zu sind, sollte sich der EDT verabschieden. Vielleicht würde ein KSKB helfen.
 

Zurück
Oben