
FAQ JavaFXConsultez toutes les FAQ
Nombre d'auteurs : 4, nombre de questions : 507, derni�re mise � jour : 2 novembre 2016 Ajouter une question
Cette FAQ a �t� r�alis�e � partir des questions fr�quemment pos�es sur le forum JavaFX de http://java.developpez.com ainsi que l'exp�rience personnelle des auteurs.
Nous tenons � souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne pr�tend pas non plus �tre compl�te. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant r�dacteur, lisez ceci.
Sur ce, nous vous souhaitons une bonne lecture.
Depuis JavaFX 8, il est � nouveau possible d'inclure des composants Swing dans une sc�ne de rendu SceneGraph. Cette solution est destin�e � permettre le port rapide d'applications Swing vers JavaFX � moindre co�t ou encore de capitaliser sur l'immense vivier de composants Swing et Java2D d�j� pr�ts � l'emploi compte tenu de l'�ge de cette biblioth�que.
Le n�ud javafx.embed.swing.SwingNode peut �tre utilis� pour inclure un composant Swing dans une arborescence SceneGraph. Par exemple :
Code java : | S�lectionner tout |
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | public class Main extends Application { @Override public void start(Stage primaryStage) { final SwingNode swingNode = new SwingNode(); // Cr�ation de l'UI Swing sur le thead EDT de AWT/Swing. SwingUtilities.invokeLater(() -> initSwingUI(swingNode)); final StackPane root = new StackPane(swingNode); final Scene scene = new Scene(root, 300, 300); primaryStage.setTitle("Test d'int�gration de Swing"); primaryStage.setScene(scene); primaryStage.show(); } // Cette m�thode est invoqu�e sur le thread EDT de AWT/Swing. private void initSwingUI(final SwingNode swingNode) { final JButton button = new JButton("Cliquez moi !"); button.setToolTipText("Un bouton Swing dans une IU JavaFX !"); final JToolBar toolBar = new JToolBar(); toolBar.add(button); toolBar.setFloatable(false); button.addActionListener(actionEvent -> System.out.println("Salut le monde, depuis Swing !")); final DefaultTableModel tableModel = new DefaultTableModel(new String[]{"Nom", "Pr�nom", "�ge", "Sexe"}, 0); tableModel.addRow(new Object[]{"Henri", "Martin", 28, 'M'}); tableModel.addRow(new Object[]{"Jeanette", "Dupond", 32, 'F'}); tableModel.addRow(new Object[]{"Amedh", "Rehan", 26, 'M'}); tableModel.addRow(new Object[]{"Sylvie", "Durant", 18, 'F'}); tableModel.addRow(new Object[]{"Petelo", "Seasifi", 20, 'M'}); final JTable table = new JTable(tableModel); final JScrollPane tableScroll = new JScrollPane(table); final BorderLayout borderLayout = new BorderLayout(); final JPanel pane = new JPanel(borderLayout); pane.add(toolBar, BorderLayout.NORTH); pane.add(tableScroll, BorderLayout.CENTER); // Ajout des composant Swing dans SceneGraph. swingNode.setContent(pane); } public static void main(String[] args) { launch(args); } } |
Et nous obtenons le r�sultat suivant :

Vous pouvez appliquer n'importe quel effet, transformation ou animation sur le n�ud SwingNode, car ce dernier est un n�ud SceneGraph comme un autre.
Par exemple, le code suivant affecte d'une rotation le n�ud SwingNode contenant notre affichage Swing pr�c�dent :
Code Java : | S�lectionner tout |
1 2 3 4 5 | final RotateTransition rotate = new RotateTransition(Duration.seconds(25), swingNode); rotate.setCycleCount(RotateTransition.INDEFINITE); rotate.setInterpolator(Interpolator.LINEAR); rotate.setByAngle(360); rotate.play(); |
Cependant, il reste tout � fait possible d�interagir avec les composants Swing contenus dans l'affichage, m�me quand ces derniers ont la t�te � l'envers !

Par contre, il est impossible d'appliquer des effets, transformations ou animations JavaFX sur les composants Swing de notre affichage (JPanel, JButton, JTable) directement : le n�ud SwingNode marque une fronti�re entre le monde JavaFX et le monde Swing.
Note : on notera cependant que l'affichage de l'infobulle du bouton n'est pas affect� par la rotation et a lieu � sa position non transform�e puisque cet affichage est g�r� en interne par Swing dans une fen�tre s�par�e.
Actuellement une telle int�gration est possible, mais reste du domaine de l'exp�rimental et n�cessite de recompiler plusieurs classes du moteur de rendu Prism. Il faut de plus forcer Prism � utiliser OpenGL via un param�tre de la JVM.
Pour int�grer World Wind, l'outil SIG de la NASA bas� sur Swing dans JavaFX, il faut utiliser la classe gov.nasa.worldwind.awt.WorldWindowGLJPanel au lieu de la classe gov.nasa.worldwind.awt.WorldWindowGLCanvas.
Par exemple :
Code Java : | S�lectionner tout |
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 27 28 29 | public class Main extends Application { @Override public void start(Stage primaryStage) { final SwingNode swingNode = new SwingNode(); final StackPane root = new StackPane(); root.getChildren().add(swingNode); final Scene scene = new Scene(root, 300, 250); primaryStage.setTitle("Test de WorldWind"); primaryStage.setScene(scene); primaryStage.show(); SwingUtilities.invokeLater(() -> initializeWorldWind(swingNode)); } private void initializeWorldWind(final SwingNode swingNode) { // final WorldWindowGLCanvas wwd = new WorldWindowGLCanvas(); final WorldWindowGLJPanel wwd = new WorldWindowGLJPanel(); wwd.setPreferredSize(new java.awt.Dimension(300, 250)); wwd.setModel(new BasicModel()); swingNode.setContent(wwd); } /** * @param args the command line arguments */ public static void main(String[] args) { launch(args); } } |
Ce qui nous donne :

Proposer une nouvelle r�ponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plut�t sur le forum de la rubrique pour �aLes sources pr�sent�es sur cette page sont libres de droits et vous pouvez les utiliser � votre convenance. Par contre, la page de pr�sentation constitue une �uvre intellectuelle prot�g�e par les droits d'auteur. Copyright � 2025 Developpez Developpez LLC. Tous droits r�serv�s Developpez LLC. Aucune reproduction, m�me partielle, ne peut �tre faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'� trois ans de prison et jusqu'� 300 000 � de dommages et int�r�ts.