# JFrame blockiert java Anwendung



## Michael95 (28. Jul 2011)

Wenn ich in meinem Programm ein JFrame öffne, bekomm ich es praktisch nicht mehr zu,
bzw wenn das Programm sich beenden sollte bleibts einfach stehen.
Auch wenn ich das JFrame über shutdownHook direkt mit dispose() / finalize() anspreche,
bleibt mein Programm an dem Punkt einfach stehen.

Tritt aber nur auf wenn das Frame mal angezeigt wurde, also mit setVisible(true) angesprochen wurde,
wenn ich es nur initiiere und dann mein Programm schließe gehts sofot zu, mit den selben Zeilen Code.


Ich hab das gleiche Problem wie dergrüne (http://www.java-forum.org/spiele-mu...java-resourcen-problem-jframe.html#post343991)
Leider gibts hierzu keine Antwort.


----------



## c_sidi90 (28. Jul 2011)

poste mal ein wenig Code, es könnte mehrere Hintergründe geben.


----------



## SlaterB (28. Jul 2011)

eher zum grünen passend:
[c]jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);[/c]
ist der Standard zum Beenden, also ein System.exit(), 
was vielleicht Probleme macht wenn andere laufende Programme in derselben JVM weiterlaufen sollen,

nur dispose() läßt den AWT-Thread im Hintergrund weiterlaufen, richtig, das dürfte allgemein bekannt sein, 
an eine Diskussion zum Grund/ Möglichkeiten kann ich mich gar nicht erinnern, wäre eigentlich interessant..

-----

> Wenn ich in meinem Programm ein JFrame öffne

wenn also konkret dein Programm Probleme macht, wäre es dann nicht wert dazu etwas zu posten?
ganz allgemein vermutet könnte ich mir eine Blockierung des AWT-Threads mit Arbeit von dir vorstellen,

in folgenden Programm geht das Schließen nicht:

```
public class TestGUI  extends JFrame {
    public TestGUI() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(300, 300);
        setVisible(true);

        Runnable r = new Runnable(){
                public void run() {
                    System.out.println("run startet");
                    while (true) {} // viel Arbeit
                }
            };
        SwingUtilities.invokeLater(r);
    }

    public static void main(String[] args)  {
        new TestGUI();
    }
}
```


----------

