Bonjour à tous,
je n'arrive pas à afficher un JPanel contenant un SwingComponant personnalisé.
Je m'explique. Je cherche à afficher une page xhtml contenant un formulaire de type xform, le tout dans un JPanel embarqué dans mon JavaFX (j'veux pas une JFrame qui survole mon appli ^^). Je me suis tourné vers l'API jdic, qui propose un composant WebBrowser.
J'ai voulu tester tout ça. J'ai suivi les instructions de la FAQ:
http://java.developpez.com/faq/javaf...omposantsSwing
J'ai donc maintenant un objet WebBrowserFX avec sa méthode createJComponent() qui retourne un JPanel contenant le WebBrowser (qui pointe sur google). Je crée une fenêtre simple avec stage puis scene avec content bindé sur mon WebBrowserFX. J'initialise width et height du WebBrowserFX en 800, 600.
Résultat: la fenêtre s'affiche au centre de l'écran, vide...
Je tente de passer la fenêtre en plein écran. Bingo! Le browser s'affiche avec google, mais en haut à gauche (je suis en 1600x1200). Je comprends pas trop. J'essaie de la déplacer dans la fenêtre avec diverses solutions:
- translateX directement dans le Node => le contenu devient vide!
- setLocation() dans le code du createJComponent() = aucun effet
Si j'essaie d'intégrer ce composant perso WebBrowserFX dans un de mes projets, le contenu (la page web) s'affiche pendant un 10ème de seconde au lancement (si je mets le panel au dessus de tout le reste) mais devient vide juste après. Impossible de stabiliser le contenu.
[EDIT]Voici le code:
WebBrowserFX2.fx
Main.fx
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public class WebBrowserFX2 extends SwingComponent { public override function createJComponent() { var webBrowser:WebBrowser = new WebBrowser(); try { webBrowser.setURL(new URL("http://localhost:8084")); } catch (e:MalformedURLException) { println(e.getMessage()); } var panel:JPanel = new JPanel(); panel.setLayout(new BorderLayout()); panel.setPreferredSize(new Dimension(width, height)); panel.add(webBrowser, BorderLayout.CENTER); //Essai de translation... //panel.setLocation(500, 500); return panel; } }
Si quelqu'un a une idée... J'arrive pas à voir pourquoi ça fait n'importe quoi comme ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 var pageHtml = WebBrowserFX2 { width: 800 height: 600 //Essais de translations... //translateX: 25 //translateY: 130 } var stage = Stage { fullScreen: true width: 1600 height: 1200 visible: true scene: bind scene } var scene: Scene = Scene { content: Group { content: bind pageHtml clip: Rectangle { width: stage.width height: stage.height } } fill: Color.TRANSPARENT }
Merci d'avance.
Partager