2016-01-22 1 views
-1

Je veux utiliser un JFXPanel pour un lecteur vidéo. J'utilise un fichier fxml pour la conception de l'application. (Pas pour le lecteur vidéo lui-même)mettre un JFXPANEL dans un volet

... 
<VBox> 
     <Pane id="VideoEmbedded" fx:id="VideoEmbedded" style="- fx-background-color: #111111;" VBox.vgrow="ALWAYS" /> 
     <HBox alignment="CENTER" prefWidth="600.0" spacing="8.0" />   
</VBox> 
... 

Je veux simplement « remplacer » signifie remplir le volet (« VideoEmbedded ») avec mon JFXPanel.

//inside the controller 
final JFXPanel JFXPanel_VideoEmbedded= new JFXPanel(); 

@FXML 
private JPanel VideoEmbedded; 
... 
//inside the videoplayer function 
VideoEmbedded.add(JFXPanel_VideoEmbedded); //this doesn't work 

Comment puis-je ajouter le JFXPanel dans la bonne position dans la DOM-Hirarchy?

+0

Je ne comprends pas pourquoi votre 'JPanel' est défini dans votre classe de contrôleur. Le définissez-vous dans le FXML? Si oui, comment gérez-vous les problèmes de threads décrits dans [documentation] (http://docs.oracle.com/javase/8/javafx/api/index.html)? (Et si non, pourquoi est-il annoté '@ FXML' et comment l'initialisez-vous?) Et aussi ... votre fichier FXML définit' VideoEmbedded' comme un 'Pane' mais votre contrôleur le déclare comme' JPanel', qui est évidemment incompatible. –

+0

Donc, ce que vous essayez de faire à partir de ces minuscules extraits de code n'est vraiment pas clair (c'est le moins qu'on puisse dire). Pouvez-vous expliquer ce que vous essayez réellement d'accomplir? Pourquoi avez-vous besoin de mélanger des composants swing et des composants JavaFX? –

+0

okay mon intention est de montrer une vidéo dans le volet. Mais je crois que c'est seulement possible dans JFXPanels.i combattu en le défendant j'ai accès au volet avec le même fx: id dans mon fichier fxml. Donc je peux dire que VideoEmmbeded prend le JFXPanel à l'intérieur de toi pour que je puisse le voir et peut lire la vidéo (je peux juste entendre l'audio maintenant) Dans Jquery je ferais juste $ ('# JFXPanel_VideoEmbedded'). appendTo ("# VideoEmbedded"); – user3776738

Répondre

1

vous mixez Java Swing et JavaFX (technologie plus ancienne et de la technologie plus récente) le JPanel VideoEmbedded est Java Swing le JFXPanel JFXPanel_VideoEmbedded est JavaFX

voir ce fil Adding JFXPanel to a JFrame. Why is it not working? et les liens ci-dessus

0
panel.add(jfxPanel, BorderLayout.CENTER); 

voir https://docs.oracle.com/javafx/2/swing/swing-fx-interoperability.htm

ou utiliser JavaFX Scene Builder (Eclipse, Netbeans, ...)

+0

désolé, cela ne fonctionne pas – user3776738

+0

le moyen le plus simple est d'utiliser un outil de mise en page visuelle comme JavaFX Scénariste –

+0

[Plus récente version du lien] (http : //docs.oracle.com/javase/8/javafx/interoperability-tutorial/fx_swing.htm#JFXIP561) dans cette réponse. –