Hola, tenemos la solución a tu pregunta, has scroll y la hallarás un poco más abajo.
Solución:
Probablemente esté llamando manualmente setVisible(true)
en el menú. Eso puede causar un comportamiento de error desagradable en el menú.
los show(Component, int x, int x)
El método maneja todas las cosas que necesita que sucedan (resaltando cosas al pasar el mouse y cerrando la ventana emergente cuando sea necesario) donde se usa setVisible(true)
simplemente muestra el menú sin agregar ningún comportamiento adicional.
Para hacer un menú emergente con el botón derecho, simplemente cree un JPopupMenu
.
class PopUpDemo extends JPopupMenu
JMenuItem anItem;
public PopUpDemo()
anItem = new JMenuItem("Click Me!");
add(anItem);
Entonces, todo lo que necesita hacer es agregar un personalizado MouseListener
a los componentes para los que desea que aparezca el menú.
class PopClickListener extends MouseAdapter
public void mousePressed(MouseEvent e)
if (e.isPopupTrigger())
doPop(e);
public void mouseReleased(MouseEvent e)
if (e.isPopupTrigger())
doPop(e);
private void doPop(MouseEvent e)
PopUpDemo menu = new PopUpDemo();
menu.show(e.getComponent(), e.getX(), e.getY());
// Then on your component(s)
component.addMouseListener(new PopClickListener());
Por supuesto, los tutoriales tienen una explicación un poco más profunda.
Nota: Si nota que el menú emergente aparece lejos de donde el usuario hizo clic, intente usar el e.getXOnScreen()
y e.getYOnScreen()
métodos para las coordenadas x e y.
Esta pregunta es un poco antigua, al igual que las respuestas (y también el tutorial)
La API actual para configurar un menú emergente en Swing es
myComponent.setComponentPopupMenu(myPopupMenu);
De esta forma se mostrará de forma automática, tanto para disparadores de ratón como de teclado (este último depende de LAF). Además, admite la reutilización de la misma ventana emergente en los elementos secundarios de un contenedor. Para habilitar esa función:
myChild.setInheritsPopupMenu(true);
Hay una sección sobre cómo abrir un menú emergente en el artículo Cómo usar los menús de los tutoriales de Java que explica cómo usar el JPopupMenu
clase.
El código de ejemplo en el tutorial muestra cómo agregar MouseListener
s a los componentes que deben mostrar un menú emergente y muestra el menú correspondiente.
(El método que describe es bastante similar a la forma en que el tutorial presenta la forma de mostrar un menú emergente en un componente).
Calificaciones y comentarios
Si haces scroll puedes encontrar las reseñas de otros desarrolladores, tú también puedes insertar el tuyo si te apetece.