Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/02/2012, 14:44
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Click derecho en JList

Tienes que utilizar el JPopupMenu y la interfaz MouseListener y un método que tiene JList llamado locationToIndex que te devuelve el elemento de la lista más cercano al punto en el que has presionado.

Te dejo un ejemplo no completo de como podría ser (mezclando cosas de varios sitios, entre ellos: http://chuwiki.chuidiang.org/index.p..._un_JComponent y http://www.rgagnon.com/javadetails/java-0393.html


Código Java:
Ver original
  1. JList lista = new JList();
  2.  
  3. //Rellenamos la lista con lo que sea
  4.  lista.addMouseListener(new MouseListener() {
  5.  
  6.             @Override
  7.             public void mouseReleased(MouseEvent e) {
  8.                 muestraMenu(e);
  9.             }
  10.  
  11.             /**
  12.              * Método que muestra el menú.
  13.              *
  14.              * @param e
  15.              */
  16.             private void muestraMenu(MouseEvent me) {
  17.                 // isPopupTrigger() indica si es el evento de raton
  18.                 // por defecto en el sistema operativo para mostrar
  19.                 // el menu.
  20.                             boolean isPopUp = me.isPopupTrigger();
  21.                            
  22.                 if ( isPopUp) {
  23.                                    
  24.                                     int index= lista.locationToIndex(me.getPoint());
  25.                                    
  26.                                     if (index !=-1){
  27.                                lista.setSelectedIndex(lista.locationToIndex(me.getPoint()));                   
  28.                     //Todo esto de debajo se puede poner en otro método si se quiere
  29. //Tienes que borrar antes los elementos que hubiese en el popup
  30.                     popup.removeAll();
  31. //Añades, por ejemplo, el nombre del elemento seleccionado como elemento del popup
  32.                                         popup.add((String)lista.getSelectedValue());
  33.                                        
  34.                     popup.setLocation(me.getLocationOnScreen());
  35.                     popup.setVisible(true);
  36.                                     }
  37.                 }
  38.             }
  39.  
  40.             @Override
  41.             public void mousePressed(MouseEvent e) {
  42.                 muestraMenu(e);
  43.             }
  44.  
  45.             @Override
  46.             public void mouseExited(MouseEvent e) {
  47.                 muestraMenu(e);
  48.             }
  49.  
  50.             @Override
  51.             public void mouseEntered(MouseEvent e) {
  52.                 muestraMenu(e);
  53.             }
  54.  
  55.             @Override
  56.             public void mouseClicked(MouseEvent e) {
  57.                 muestraMenu(e);
  58.             }
  59.  
  60.         });


Es solo un ejemplo, pero se puede mejorar.