
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.
- Comment cr�er une barre de menu ?
- Comment afficher la barre de menu dans la barre de menu syst�me ?
- Comment ajouter des entr�es dans une barre de menu ?
- Comment ajouter des entr�es dans des menus ?
- Comment cr�er un menu contextuel ?
- Comment ajouter un menu contextuel sur un n�ud ?
- Comment r�agir � l'activation d'une entr�e dans un menu ?
- Comment mettre une ic�ne sur une entr�e ?
- Comment cr�er une entr�e customis�e dans un menu ?
Pour cr�er une barre de menu, il vous faut cr�er une instance de la classe javafx.scene.control.MenuBar, et placer cette instance dans votre IU, par exemple dans la partie top d'un BorderPane.
Par exemple :
Code Java : | S�lectionner tout |
1 2 3 | final MenuBar menuBar = new MenuBar(); final BorderPane root = new BorderPane(); root.setTop(menuBar); |
Sur Mac OS X, le plus souvent, la barre de menu d'une application n'est pas affich�e en haut de la fen�tre de l'application ; elle apparait plut�t dans la barre de menu syst�me, en haut de l��cran. Le contenu de la barre de menu syst�me change en fonction de la fen�tre active.
Pour activer cette fonctionnalit�, il vous suffit de modifier la valeur de la propri�t� useSystemMenuBar de la classe MenuBar et de lui donner une valeur �gale � true.
Par exemple :
Code Java : | S�lectionner tout |
menuBar.setUseSystemMenuBar(true);
Ce qui permet de placer la barre de menu dans la barre de menu syst�me :


Dans une application, une seule barre de menu doit voir sa propri�t� useSystemMenuBar mise � la valeur true. Le comportement de la barre syst�me n'est pas d�fini si plusieurs barres de menu voient leurs propri�t�s modifi�es.
Pour ajouter des entr�es dans une barre de menu, il faut ajouter des instances de la classe javafx.scene.control.Menu dans la liste observable menus de cette barre.
Par exemple :
Code Java : | S�lectionner tout |
1 2 3 4 5 | final Menu fileMenu = new Menu("Fichier"); final Menu editMenu = new Menu("�dition"); final Menu helpMenu = new Menu("Aide"); final MenuBar menuBar = new MenuBar(); menuBar.getMenus().setAll(fileMenu, editMenu, helpMenu); |
Pour retirer des entr�es, il suffit de les enlever de la liste observable menus.
Note : il n'est pas possible d'afficher autre chose que des menus dans une barre de menu. Pour des affichages complexes (par exemple : la barre de menu dans NetBeans contient un champ de recherche), il faudra int�grer la barre de menu dans un autre contr�le qui contiendra les objets n��tant pas des menus.
Pour ajouter des entr�es dans des menus, il faut ajouter des instances de la classe javafx.scene.control.MenuItem dans la liste observable items du menu.
Ces instances peuvent �tre des types suivants :
- Menu - un sous-menu ;
- MenuItem - une entr�e simple ;
- CheckMenuItem - une entr�e � cocher ;
- RadioMenuItem - une entr�e radio � cocher ; ce type d�entr�e est �galement une bascule ;
- SeparatorMenuItem - un s�parateur horizontal ;
- CustomMenuItem - une entr�e contenant un menu � l'apparence customis�e.
Par exemple :
Code Java : | S�lectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 | final MenuItem exitItem = new MenuItem("Quitter"); final Menu fileMenu = new Menu("Fichier"); fileMenu.getItems().setAll(exitItem); final MenuItem copyItem = new MenuItem("Copier"); final MenuItem cutItem = new MenuItem("Couper"); final MenuItem pasteItem = new MenuItem("Coller"); final MenuItem optionsItem= new MenuItem("Options..."); final Menu editMenu = new Menu("�dition"); editMenu.getItems().setAll(copyItem, cutItem, pasteItem, new SeparatorMenuItem(), optionsItem); final MenuItem aboutItem = new MenuItem("� propos..."); final Menu helpMenu = new Menu("Aide"); helpMenu.getItems().setAll(aboutItem); |
Pour retirer des entr�es, il suffit de les enlever de la liste observable items.
Pour cr�er un menu contextuel, il vous faut cr�er une instance de la classe javafx.scene.control.ContextMenu. Pour ajouter des entr�es dans ce menu, il faut ajouter des instances de la classe javafx.scene.control.MenuItem dans la liste observable items du menu contextuel.
Par exemple :
Code Java : | S�lectionner tout |
1 2 3 4 5 6 7 | final MenuItem imageItem = new MenuItem("Image..."); final MenuItem pdfItem = new MenuItem("PDF..."); final Menu exportMenu = new Menu("Export"); exportMenu.getItems().setAll(imageItem, pdfItem); final MenuItem propertiesItem = new MenuItem("Propri�t�s..."); final ContextMenu contextMenu = new ContextMenu(); contextMenu.getItems().setAll(exportMenu, new SeparatorMenuItem(), propertiesItem); |
Pour retirer des entr�es, il suffit de les enlever de la liste observable items.
Les n�uds graphiques qui h�ritent de la classe Control disposent de la propri�t� contextMenu qui permet de placer un menu contextuel sur eux. Si cette propri�t� n'a pas une valeur �gale � null, le menu contextuel sera invoqu� lorsque l'utilisateur effectue une action qui affiche d'ordinaire un menu contextuel (par exemple : clic droit avec la souris).
Par exemple :
Code Java : | S�lectionner tout |
myControl.setContextMenu(contextMenu);
Pour des types de n�uds qui ne sont pas des contr�les et ne disposent pas de cette propri�t�, il est possible de leur rajouter le support de la gestion des menus contextuels en leur attachant un gestionnaire d��v�nements de type EventHandler<ContextMenuEvent> :
Code Java : | S�lectionner tout |
1 2 3 4 5 6 | rectangle.addEventHandler(ContextMenuEvent.CONTEXT_MENU_REQUESTED, new EventHandler<ContextMenuEvent>() { public void handle(ContextMenuEvent contextMenuEvent) { contextMenu.show(rectangle, contextMenuEvent.getScreenX(), contextMenuEvent.getScreenY()); contextMenuEvent.consume(); } }); |
Ou :
Code Java : | S�lectionner tout |
1 2 3 4 | rectangle.addEventHandler(ContextMenuEvent.CONTEXT_MENU_REQUESTED, contextMenuEvent -> { contextMenu.show(rectangle, contextMenuEvent.getScreenX(), contextMenuEvent.getScreenY()); contextMenuEvent.consume(); }); |
D�sormais, si nous cliquons avec le bouton de droite sur le rectangle, un menu contextuel sera affich� � cette position.
Pour r�agir � l'activation d'une entr�e dans un menu, il suffit de placer un callback de type EventHandler<ActionEvent> dans sa propri�t� onAction.
Par exemple :
Code Java : | S�lectionner tout |
1 2 3 4 5 6 7 | item.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent actionEvent) { System.out.println("Salut le monde !"); } }); |
ou :
Code Java : | S�lectionner tout |
item.setOnAction(actionEvent -> System.out.println("Salut le monde !"));
Pour mettre une ic�ne sur une entr�e, il suffit de modifier la valeur de sa propri�t� graphic et de lui donner comme nouvelle valeur une ImageView contenant une Image.
Code Java : | S�lectionner tout |
1 2 3 | final Image image = new Image(getClass().getRessource("Ok.png").toExternalForm()); final ImageView icon = new ImageView(image); item.setGraphic(icon); |
Note : cette propri�t� accepte n'importe quel type de n�ud graphique. Il est donc possible de donner un affichage ou un fonctionnement riche � une entr�e en mettant un n�ud ou un contr�le complexe, interactif ou pas, dans cette propri�t�.
Pour cr�er une entr�e customis�e dans un menu, il faut cr�er une instance de la classe javafx.scene.control.CustomMenuItem et lui fournir un contr�le destin� � �tre affich� dans cette entr�e en modifiant la valeur de sa propri�t� content.
Par d�faut, les entr�es de menu sont configur�es pour cacher le menu d�s qu'on les active � la souris. La classe CustomMenuItem dispose de la propri�t� hideOnClick qui permet de d�sactiver ce comportement.
Par exemple :
Code Java : | S�lectionner tout |
1 2 | final CustomMenuItem customMenuItem = new CustomMenuItem(new Slider()); customMenuItem.setHideOnClick(false); |
Ici, nous avons cr�� une nouvelle entr�e customis�e contenant une r�glette et nous avons configur� l�entr�e pour ne pas cacher le menu quand nous interagissons avec cette r�glette avec la souris.
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.