IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
logo

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.

SommaireSceneGraphInterface utilisateurContr�lesMenus (9)
pr�c�dent sommaire suivant
 

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);

Mis � jour le 7 octobre 2014 bouye

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.

Mis � jour le 7 octobre 2014 bouye

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.

Mis � jour le 7 octobre 2014 bouye

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.

Mis � jour le 7 octobre 2014 bouye

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.

Mis � jour le 7 octobre 2014 bouye

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.

Mis � jour le 7 octobre 2014 bouye

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 !"));

Mis � jour le 7 octobre 2014 bouye

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�.

Mis � jour le 8 octobre 2014 bouye

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.

Mis � jour le 7 octobre 2014 bouye

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 �a


R�ponse � la question

Liens sous la question
pr�c�dent sommaire suivant
 

Les 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.