2009-04-08 83 views
6

¿hay alguna manera de agregar un JMenuItem a un JPanel para que pueda crear un botón para mostrar varias opciones, como el último botón de noticias en firefox, debajo de la barra de direcciones?Java: ¿Cómo puedo agregar un JMenu a un JPanel o crear un botón desplegable?

sólo puedo añadir JMenu y JMenuItems a un JMenuBar, JPopupMenu y otra JMenus y JMenuItems

¿Hay alguna manera de crear en Java Swing de un menú desplegable JButton? (los que tienen una flecha hacia abajo en su izquierda, que muestra más opciones para el usuario)

gracias de antemano

+0

Gracias por su respuesta. Si tiene un código que ilustra su solución, puede ser interesante publicarlo como una respuesta (y elija su propia entrada como la respuesta oficial si lo desea) – VonC

+0

Pero lo hice, pero tengo que esperar 48 horas para votar mi respuesta – Telcontar

Respuesta

5

Conviene por último garantizar implemento el botón "mostrar opciones" con un simple Jutton, y una JPopupPane con las opciones para mostrar:

En el ActionPerformedListener del botón momento de escribir este código:

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

Se funciona bien como un JMenu en una JMenuBar, pero no exactamente como un botón desplegable, en el que puedes realizar una acción presionando el botón o mostrar más acciones presionando la flecha hacia abajo. Creo que esto se puede hacer usando dos botones "muy cerca", luego use el código de arriba en el botón de flecha, pero establezca el "botón de acción" como el componente de la ventana emergente, de modo que la ventana emergente se muestre debajo de ambos botones.

+0

Gracias por este comentario. +1 – VonC

3

Un JMenuBar Sólo se añadirán a un JFrame (setMenuBar()), no un JPanel.

Un botón desplegable de Swing es el camino a seguir aquí.

ver este article para una buena discusión sobre diversas propuestas de implementación

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

El botón desplegable de arriba utilizar la API de interfaz de usuario NetBeans Utilidades (platform7/modules/org-openide-awt.jar en cualquier distribución de NetBeans IDE). No necesita tener NetBeans para ejecutarlo: solo este jar que ha extraído de la instalación de NetBeans.

+0

Funciona, pero finalmente no lo uso para no depender de un contenedor externo en la aplicación, que es distribuida por JavaWebStart. Lo hago mostrando un menú emergente en el punto 0, comp.getHeight() del botón – Telcontar

Cuestiones relacionadas