2012-01-20 22 views
8

He estado trabajando en un juego 2d en Java recientemente, y actualmente estoy tratando de hacer que el sistema de manejo de eventos funcione correctamente. Intenté hacer clic con el mouse para comenzar una animación, y funcionó hasta que intenté mover el mouse mientras hacía clic. En este punto, nada sucede en absoluto. Estoy usando las clases mouselistener y mousemotionlistener, y el problema persiste. Aquí podemos ver el código principal:Eventos de mouse Java ignorados cuando el mouse se mueve?

public class ML extends MouseAdapter{ 
    public void mouseClicked(MouseEvent m){ 
     if(m.getButton()==MouseEvent.BUTTON1) 
     guns.playOnce(); 
    } 
    public void mouseReleased(MouseEvent m){ 
     if(m.getButton()==MouseEvent.BUTTON1); 
    } 

Se llama a la clase de animación para jugar el juego de imágenes de una vez y se detendrá. El animador funcionaba perfectamente antes de incluir eventos de mouse. No puedo entender por qué no funcionaría durante el movimiento del mouse si no hay una acción especificada para realizar durante ese movimiento del mouse. (Si hay una solución obvia, me disculpo, comencé a usar java no hace mucho tiempo)

Respuesta

6

En Java, un clic del mouse solo se registra si se presiona y suelta el mouse sin mover el mouse. Esto es difícil de lograr para la mayoría de los usuarios, por lo que la mayoría de los elementos de la interfaz de usuario (como los botones) reaccionan al presionar y soltar eventos del mouse e ignoran el "clic". Sin embargo, para un botón, una mejor opción es agregarle un ActionListener. Luego, el botón escuchará los eventos del mouse y decidirá cuándo se ha hecho clic.

+0

Gracias! La sugerencia de hacer clic me ahorrará algo de frustración más adelante. – Ryan

+2

@trashgod: Bueno, en realidad, 'ButtonModel' simplemente rastrea el estado: es el' ButtonUI' que escucha los eventos del mouse y actualiza el modelo. –

Cuestiones relacionadas