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:
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.
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.