Estoy tratando de escribir un clon Buscaminas en Java por diversión. Tengo una grilla de JButtons cuyas etiquetas cambiaré para representar el recuento de peligros, indicadores, etc.Haga clic derecho en JButton
Mi problema es que no sé cómo hacer clic con el botón derecho en un JButton para presionar el botón. He hecho lo siguiente:
button.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
boolean mine = field.isMine(x, y);
if (e.isPopupTrigger()) {
button.setText("F");
}
else {
if (mine) {
button.setText("X");
}
}
}
});
Esto no parece funcionar del todo; la "F" nunca se muestra, solo la parte "X". Pero más importante aún, esto no hace nada para presionar el botón.
EDITAR: Las Mac tienen un disparador emergente en mousePress, no mouseClick.
EDIT: Aquí está la solución que funcionó con sede fuera de respuesta aceptada:
button.addMouseListener(new MouseAdapter(){
boolean pressed;
@Override
public void mousePressed(MouseEvent e) {
button.getModel().setArmed(true);
button.getModel().setPressed(true);
pressed = true;
}
@Override
public void mouseReleased(MouseEvent e) {
//if(isRightButtonPressed) {underlyingButton.getModel().setPressed(true));
button.getModel().setArmed(false);
button.getModel().setPressed(false);
if (pressed) {
if (SwingUtilities.isRightMouseButton(e)) {
button.setText("F");
}
else {
button.setText("X");
}
}
pressed = false;
}
@Override
public void mouseExited(MouseEvent e) {
pressed = false;
}
@Override
public void mouseEntered(MouseEvent e) {
pressed = true;
}
});
add(button);
Minesweeper clone http://grab.by/1y9z
Y sí me doy cuenta de la junta final no debe tener todos los números mostrados. Solo estoy desarrollando. – I82Much
¿Para qué necesitas estas cosas de 'popupTrigger'? Simplemente verifique los eventos mousePressed y verifique los modificadores del evento para BUTTON1_MASK o BUTTON2_MASK. –