2011-12-14 17 views
5

Tengo un JComboBox (entre otros componentes) dentro de un JPopupMenu. Resulta que cada vez que abro la ventana emergente del cuadro combinado (para seleccionar un elemento), el padre JPopupMenu se cierra. He estado tratando de encontrar una manera de anular esta función, fue en vano.JPopupMenu cierra cuando popup niño abre

¿Alguien tiene alguna sugerencia para evitar el cierre de la matriz JPopupMenu? ¡Gracias!

Respuesta

4

que no es posible directamente, es muy difícil para anular conocido bug, en otras manos oscilación no permite que dos componentes emergentes en Lightwieght mismo tiempo

import javax.swing.*; 
import java.awt.event.*; 

public class Test { 

    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     frame.setSize(400, 400); 
     frame.setVisible(true); 
     String[] list = {"1", "2", "3", "4",}; 
     JComboBox comb = new JComboBox(list); 
     final JPopupMenu pop = new JPopupMenu(); 
     pop.add(comb); 
     frame.addMouseListener(new MouseAdapter() { 

      @Override 
      public void mousePressed(MouseEvent e) { 
       System.out.println("mousePressed"); 
       pop.show(e.getComponent(), e.getX(), e.getY()); 
      } 
     }); 
    } 
} 

pero solución es muy simple uso JWindows o anular el decorado JDialog con JComboBox en lugar de JPopup

+0

Lamentablemente, creo que tiene razón. Necesitaré encontrar otro componente adecuado para usar (que no sea JComboBox). – Sam

+0

hmmm ¿se ha enterado? Autocompletado JTextField http://stackoverflow.com/a/7255918/714968 – mKorbel