Konsumierer
Mitglied
Hallo!
Meine Anwendung soll zyklisch Panels austauschen können.
Das ganze funktioniert auch schon ganz gut, mit dem einen Problem, dass ich keine einfachen JPanels verwende, sondern JWebBrowser Panels. JWebBrowser bindet über SWT ein natives Widget ein, nämlich Firefox oder IE. Wenn ich das alte Panel durch ein neues ersetze, dauert es (wenn auch nur sehr kurz) bis die neue HTML Seite aufgebaut ist.
Nun ist mein Ansatz, dass ich das JWebBrowser Panel schon kurze Zeit vorher initialisiere und sobald es angezeigt werden soll, die Panels switche.
Mein erster Versuch dies mit JLayeredPane umzusetzen scheiterte daran, dass immer eine Exception von der JWebBrowser Komponente geworfen wurde, wenn ich layeredPane.moveToFront(browser) aufrief:
Jetzt habe ich es noch mit einem JPanel mit CardLayout versucht. Damit funktioniert zwar generell das Umschalten, die Verzögerung ist aber immer noch vorhanden.
Ich vermute mal, dass es daran liegt, dass durch
irgendeine paint() Methode aufgerufen wird, die den Browser veranlasst, seinen Inhalt nochmal zu rendern.
Ich suche also eine Möglichkeit die Verzögerung zwischen dem Umschalten zwischen zwei Panels zu umgehen.
Hat jemand eine Idee, wie man das Problem in den Griff bekommt?
Bin für jeden Hinweis dankbar!
Gruß
Meine Anwendung soll zyklisch Panels austauschen können.
Das ganze funktioniert auch schon ganz gut, mit dem einen Problem, dass ich keine einfachen JPanels verwende, sondern JWebBrowser Panels. JWebBrowser bindet über SWT ein natives Widget ein, nämlich Firefox oder IE. Wenn ich das alte Panel durch ein neues ersetze, dauert es (wenn auch nur sehr kurz) bis die neue HTML Seite aufgebaut ist.
Nun ist mein Ansatz, dass ich das JWebBrowser Panel schon kurze Zeit vorher initialisiere und sobald es angezeigt werden soll, die Panels switche.
Mein erster Versuch dies mit JLayeredPane umzusetzen scheiterte daran, dass immer eine Exception von der JWebBrowser Komponente geworfen wurde, wenn ich layeredPane.moveToFront(browser) aufrief:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: A native component cannot be re-created after having been disposed! To achieve re-parenting or allow re-creation, set the option to defer destruction until finalization (note that re-parenting accross different frames is not supported).
Jetzt habe ich es noch mit einem JPanel mit CardLayout versucht. Damit funktioniert zwar generell das Umschalten, die Verzögerung ist aber immer noch vorhanden.
Ich vermute mal, dass es daran liegt, dass durch
Code:
((CardLayout) cards.getLayout()).show(cards, "browser");
Ich suche also eine Möglichkeit die Verzögerung zwischen dem Umschalten zwischen zwei Panels zu umgehen.
Hat jemand eine Idee, wie man das Problem in den Griff bekommt?
Bin für jeden Hinweis dankbar!
Gruß
Zuletzt bearbeitet: