2009-04-08 20 views
6

Y at-il un moyen d'ajouter un JMenuItem à un JPanel afin que je puisse créer un bouton pour afficher plusieurs options, comme le dernier bouton de nouvelles dans Firefox, sous la barre d'adresse?Java: Comment ajouter un JMenu à un JPanel ou créer un bouton déroulant?

Je ne peux ajouter JMenu et JMenuItems à un JMenuBar, JPopupMenu et d'autres JMenus et JMenuitems

Est-il possible de créer en Java Swing un menu déroulant DButton? (ceux avec une flèche vers le bas dans leur gauche qui montre plus d'options à l'utilisateur)

Merci à l'avance

+0

Nous vous remercions de vos commentaires. Si vous avez un code illustrant votre solution, il pourrait être intéressant de la publier comme réponse (et choisissez votre propre réponse comme réponse officielle si vous le souhaitez) – VonC

+0

thx, je l'ai fait, mais je dois attendre 48 heures pour voter réponse – Telcontar

Répondre

5

finnally i mettre en œuvre le "bouton afficher les options" avec un simple Jutton, et un JPopupPane avec les options pour afficher:

Dans le ActionPerformedListener du bouton i écrire ce code:

popMenu.show(showOptionsButton,0,showOptionsButton.getHeight()) 

Il fonctionne bien comme un JMenu dans un JMenuBar, mais pas exactement comme un bouton déroulant, dans lequel vous pouvez effectuer une action en appuyant sur le bouton ou afficher plus d'actions en appuyant sur la flèche vers le bas. Je crois que cela peut être fait en utilisant deux boutons "très proches", puis utilisez le code ci-dessus dans le bouton fléché, mais en définissant le "bouton d'action" comme le composant de la popup, de sorte que la popup montre ci-dessous des deux boutons.

+0

Merci pour ce commentaire. +1 – VonC

3

A JMenuBar ne devraient être ajoutés à un JFrame (setMenuBar()), pas un JPanel.

Un bouton déroulant Swing est le chemin à parcourir ici.

Voir cette article pour une bonne discussion sur diverses propositions de mise en œuvre

alt text http://blogs.sun.com/geertjan/resource/dropdownbutton1-jl.png

Le bouton déroulant ci-dessus utilisent le UI NetBeans Utilities API (platform7/modules/org-openide-awt.jar dans toute distribution de NetBeans IDE). Vous n'avez pas besoin d'avoir NetBeans pour l'exécuter: seulement ce pot que vous avez extrait de l'installation de NetBeans.

+0

Cela fonctionne mais je ne l'utilise finalement pas pour ne pas dépendre d'un pot externe dans l'application, qui est distribué par JavaWebStart. Je le fais en montrant un pop-menu sur le point 0, comp.getHeight() du bouton – Telcontar