Saltar al contenido

¿Cómo creo un menú contextual de clic derecho en Java Swing?

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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *