setlayout create java swing jframe jbutton

java - create - Cómo simular el movimiento de JButtons específicos en una matriz de JButtons



layout java jframe (1)

También debe agregar un KeyListener al botón con un KeyAdapter como argumento, y cuando el evento se active, puede obtener el código clave del evento y verificarlo con los valores:

KeyEvent.VK_UP KeyEvent.VK_DOWN KeyEvent.VK_LEFT KeyEvent.VK_RIGHT

Y luego tome la acción necesaria.

En cuanto a la simulación del movimiento, ¿quieres que el triángulo simplemente "salte" de un botón a otro, o algo más fluido?

Estoy tratando de hacer un pequeño juego en Java para una tarea.

Necesitamos tener una Cuadrícula redimensionable en una ventana JFrame con nxn (n = algunos números razonables como 5 o 7) campos (en este caso cada campo es un botón) y en ese campo estas son las reglas:

El botón del medio es un "agujero negro", y hay 2 jugadores. Cada jugador tiene N-1 número de naves que tienen a su disposición, y tienen que moverlas al agujero negro. El primer jugador que logra esto gana. Los barcos de ambos jugadores están alineados diagonalmente hacia y desde el centro (agujero negro).

El truco es, cuando le dices a un barco que vaya en una dirección, irá en esa dirección hasta que golpee la pared u otro barco.

Así es como el juego se ve en la configuración y mientras mueves barcos:

Mi pregunta es: ya hice exitosamente el campo con todas las naves y el agujero negro en la posición correcta. Todos ellos son botones y se puede hacer clic en ellos, así que ahora ¿cómo logro lo siguiente?

Después de seleccionar un solo botón con el clic del mouse, el sistema debe establecer el foco en él (intenté requestFocus () a través de un ActionListener pero parece que no hace nada).

Luego, después de configurar el foco, ese mismo botón (que ya tiene un ActionListener) tendrá un KeyListener en él que espera las entradas de la tecla de flecha. Luego, después de ingresar la dirección, ese botón moverá su colorante, simulando movimiento, hasta que golpee una nave, la pared o ingrese en el agujero negro cuando se borre del mapa.

Mi pregunta es, ¿cómo puedo hacer que Java sepa que el KeyListener en un botón específico solo debería escuchar las teclas de flecha después de que seleccioné el botón

y el otro es: ¿cómo simuló el movimiento?

Básicamente, las naves espaciales de ambos equipos son de color azul / rojo. El resto de los bloques son todos blancos excepto el agujero negro en el medio que es negro.

¿Cómo lo hago para que cuando un botón seleccionado obtenga un comando de movimiento, cambie su setBackGroundColoring para que cambie bloque por bloque hasta que golpee una pared u otra nave? Ni siquiera sé por dónde empezar, así que pensé en pedir aquí un poco de ayuda.