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
//Rellenamos la lista con lo que sea
@Override
muestraMenu(e);
}
/**
* Método que muestra el menú.
*
* @param e
*/
// isPopupTrigger() indica si es el evento de raton
// por defecto en el sistema operativo para mostrar
// el menu.
boolean isPopUp = me.isPopupTrigger();
if ( isPopUp) {
int index= lista.locationToIndex(me.getPoint());
if (index !=-1){
lista.setSelectedIndex(lista.locationToIndex(me.getPoint()));
//Todo esto de debajo se puede poner en otro método si se quiere
//Tienes que borrar antes los elementos que hubiese en el popup
popup.removeAll();
//Añades, por ejemplo, el nombre del elemento seleccionado como elemento del popup
popup.
add((String)lista.
getSelectedValue());
popup.setLocation(me.getLocationOnScreen());
popup.setVisible(true);
}
}
}
@Override
muestraMenu(e);
}
@Override
muestraMenu(e);
}
@Override
muestraMenu(e);
}
@Override
muestraMenu(e);
}
});
Es solo un ejemplo, pero se puede mejorar.