23 marzo 2015

Dibujando con Java: JFrames

Hablando de Java, ya había comentado como hacer interfaces gráficas, usar Layout Managers para ventanas, hacer interfaces complejas, escuchar eventos y hasta como usar un ScrollPane.  En esta ocasión voy a hablar de la forma de usar la clase JFrame para dibujar rectángulos en una ventana.  Obviamente estos principios pueden ayudarte a dibujar lo que quieras, pero voy a crear una pista de carreras rudimentaria para un juego donde los jugadores podrán controlar unos carritos (rectángulos) a través de esta pista.

Antes de mostrar el video, quiero resaltar algunos aspectos importantes del programa (el código fuente se puede descargar también más adelante).

Antes de hacer otra cosa, para dibujar en un JFrame (el JFrame es la pura ventana vacía), se tiene que incluir en la línea de declaración de la clase.  En mi caso concreto, se hace de esta manera:

public class RaceGame extends JFrame

Después de esto, hay que cambiar la función main() para que contenga una línea de código donde se crea el objeto de la clase (lo cual hace que se llame el constructor de la clase).  En mi caso concreto se puede hacer de la siguiente forma:

RaceGame g = new RaceGame();

Todo el código necesario para correr tu clase debe estar en el constructor: por esta razón no escribo más código en la función main().  Si tienes dudas con constructores, no dudes en ver este post de mi blog donde lo explico.

Después para dibujar objetos en mi JFrame, es necesario incluir el método paint() en la clase.  Es aquí donde se establecen colores y dibujan figuras.  Esta función la ejecuta el sistema operativo cada vez que necesita redibujar la ventana.

Aquí les dejo un video que explica el programa hasta esta etapa:


Y si quieren el código, lo pueden descargar de aquí.

La imagen de la pisa de carreras que se está dibujando la tomé de la página de Bit Rebels.

La idea de este proyecto fue tomado de este libro:



¡Hasta la próxima!

No hay comentarios.:

El Tony y sus ondas...

Related Posts Plugin for WordPress, Blogger...