JavaFX WebView lässt sich nur einmal öffnen

MitsuRonin

Mitglied
Hallo zusammen,

ich arbeite mich grade ein wenig in JavaFX ein, um unser GUI-Modul mit ein paar netten Features aufzuhübschen.

Als erstes möchte ich der GUI einen Frame verpassen, der sich per Browser auf einen unserer Webserver verbindet, um dort ein paar Daten anzeigen zu lassen.

Dabei habe ich 2 Probleme:

1. Der Browser zeigt absolut nichts an, wenn ich mich auf den Webserver verbinde, normale Internetseiten funktionieren.
Kurze Info: Der "Webserver" ist auch in Java realisiert und sendet die HTML-Seiten als Byte-Array auf den Output-Stream der Socket-Verbindung. Dies funktioniert beim IE und bei Chrome super, der Firefox zeigt nur den kompletten Inhalt als einen langen String an (Also <html><head> und so weiter) - Deutet das auf einen grundsätzlichen Fehler hin, der dafür sorgt, dass der FX-Browser mit der Seite gar nix anfangen kann?

2. Das zweite Problem ist, dass ich es nicht hinbekomme, dass ich den Frame mit dem Browser ein zweites Mal öffnen kann. Beim Schließen des Frames bleiben Threads (3 Daemon-Threads, 2x Disposer, 1x ohne Namen) hängen und wenn ich den Frame ein zweites Mal öffne, dann erhalte ich eine Exception "Platform.exit has been called".

Hier mein Code, der beim Schließen des Frames aufgerufen wird:
Java:
    @Override
    public void close()
    {
        Platform.runLater( new Runnable() {
            @Override 
            public void run()
            {
                System.err.println( "exit/runLater/run" );
                engine.getLoadWorker().cancel();
                Platform.exit();
                
                SwingUtilities.invokeLater( new Runnable()
                { 
                    @Override public void run() 
                    {
                        System.err.println( "exit/invokeLater/run" );
                        closeNow();
                    }
                });
            }
        });
    }
    
    public void closeNow()
    {
        try
        {
            // Check if perspective was changed before closing view
            if(getPersp() != null && getPersp().wasChanged())
            {
                PerspManager.getInstance().chkForChanges(getPersp());
            }
            
            WindowManager.closeWindow(this);
        }
        catch(Exception ex)
        {
            ex.printStackTrace();
        }
    }

Es wäre super, wenn einer von Euch Tipps für mich hätte. Falls weitere Infos gebraucht werden, einfach melden. Betriebssystem ist Windows 7, Java-Version ist 7 Update 11.
 
Hat niemand eine Idee?

Bei Google findet man das Problem irgendwie nicht und wenn, dann wurde es durch den Aufruf der Methoden innerhalb der run()-Methoden behoben. Aber bei mir bleiben trotzdem die Threads hängen und der Frame lässt sich nicht mehr öffnen 🙁
 
Das zweite Problem hat sich erledigt, ich musste der Platform beim Programmstart, sagen, dass sie sich nicht automatisch schließt, wenn der letzte FX-Frame geschlossen wird:

Java:
Platform.setImplicitExit(false);

Das erste Problem besteht leider weiter...
 

Zurück
Oben