Tengo un JList
con un DefaultListModel
.Hacer doble clic en un evento en el elemento JList
¿Cómo puedo hacer que un elemento en un JList
reaccione para hacer doble clic en el evento?
Tengo un JList
con un DefaultListModel
.Hacer doble clic en un evento en el elemento JList
¿Cómo puedo hacer que un elemento en un JList
reaccione para hacer doble clic en el evento?
String[] items = {"A", "B", "C", "D"};
JList list = new JList(items);
list.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
JList list = (JList)evt.getSource();
if (evt.getClickCount() == 2) {
// Double-click detected
int index = list.locationToIndex(evt.getPoint());
} else if (evt.getClickCount() == 3) {
// Triple-click detected
int index = list.locationToIndex(evt.getPoint());
}
}
});
Sé que tiene una solución simple, pero es posible que desee comprobar hacia fuera List Action para una solución más general que le permitirá utilizar el ratón, así como el tablero de llaves. El diseño adecuado de GUI debe permitir el uso para usar cualquiera de los enfoques.
(en base a Mohamed Saligh, la respuesta aceptada)
Si está utilizando NetBeans
Seleccione el JList ventana> Eventos> mouseClicked
private void jListNicknamesMouseClicked(java.awt.event.MouseEvent evt) {
JList list = (JList)evt.getSource();
if (evt.getClickCount() == 2) {
int index = list.locationToIndex(evt.getPoint());
System.out.println("index: "+index);
}
}
Tenga en cuenta que si la lista tiene un espacio vacío, y un usuario hace doble clic en el espacio vacío, esto detectará un doble clic en el último objeto de la lista. Si solo desea detectar clics en el área de la lista que contiene elementos, puede marcarlos así: Rectángulo r = list.getCellBounds (0, list.getLastVisibleIndex()); if (r! = Null && r.contains (evt.getPoint())) { int index = list.locationToIndex (evt.getPoint()); } –
¿No sería suficiente pedirle a la JList el artículo seleccionado actualmente, en lugar de usar locationToIndex? es decir, simplemente llame a list.getSelectedIndex(). –
@CookieMonster, no funcionaría si la lista es de selección múltiple. –