PDF de programación - Ayuda con las librerías gráficas Swing y AWT

Imágen de pdf Ayuda con las librerías gráficas Swing y AWT

Ayuda con las librerías gráficas Swing y AWTgráfica de visualizaciones

Publicado el 12 de Septiembre del 2019
69 visualizaciones desde el 12 de Septiembre del 2019
69,9 KB
3 paginas
Creado hace 8a (08/05/2011)
Ayuda con las librerías gráficas Swing y AWT

Pintado del Tablero y de la Ficha

En principio, el tablero lo podemos implementar dentro de un objeto JPanel
de la librería Swing (import javax.swing.JPanel). Éste elemento tiene un método
paint, cuyo prototipo es public void paint(Graphics g), que se invoca cada vez
que queremos pintar dicho elemento de la clase JPanel.

Así, podemos crear nuestro tablero de la siguiente manera:


public class Tablero extends JPanel 
 { 
 
 
 
 
 

private int alto; 
private int ancho; 
private int centro; 
… 
private int anchoBloque;  

 
 
 

// Alto del tablero 
// Ancho del tablero 
// Centro (en horizontal) del tablero 

// indica cuanto mide de ancho un cuadrado de una de las piezas. 
//Se usará para pintar todas las casillas con ese tamaño 

 
 
 
 

 
 
 
 
 
 
 
 
 

 

 
 
 
 
 
 
 
 
 

 

… 

public Tablero (int ancho, int alto) 

 
 
 

this.ancho = ancho; 
this.alto = alto; 
this.centro = this.centro / 2; 

… 

 


… 

// El metodo paint que nosotros sobreescribimos 
public void paint(Graphics g) 

 

pintaTablero(g); 

… 
// Aquí podría venir también el pintado de la ficha 

 
 


… 

private Graphics pintaTablero(Graphics g) 


 
 
 
 
 

 
 
 
 

 
 
 
 
 
 
 
 
 
 

 
 

 

 
 
 
 
 

 
 

 

 
 
 
 

 
 
 
 
 

 
 

 

 
 

 

 
 
 
 

 
 
 
 
 

 
 

 

 

 
 
 
 

 
 
 
 
 

 
 

 

for (int y = 0; y < this.alto; y++) 

 
 
 

// Hacemos un recorrido por filas, siendo y la fila 
// correspondiente (en el juego, de 0 a 24) 
for (int x = 0; x < this.alto; x++) 

 
 

// Hacemos un recorrido por columnas, siendo x la 
// columna correspondiente (en el juego, de 0 a 14) 

if (estaVaciaCasilla(x,y)) 

 
 
 
 

g.setColor(Color.black); 
// La colocamos a negro, suponiendo negro el 
// color del fondo. También puede usarse si 
// se prefiere el blanco como color de fondo 

 

g.fillRect(x*anchoBloque,y*anchoBloque, 
 
anchoBloque, anchoBloque); 
// Pintamos el cuadrado correspondiente   en el  
// color del fondo 

g.setColor(obtieneColorCasilla(x,y)); 
 
// Colocamos el color al que le corresponda 
// a esa casilla, puesto que es una casilla que  
// está ocupada. 
// El método obtieneColorCasilla dependerá de 
// cómo se ha implementado el tablero 

 

 

g.fillRect(x*anchoBloque,y*this. anchoBloque, 
 
// Pintamos el cuadrado correspondiente   en el  
// color de la casilla correspondiente 

anchoBloque, anchoBloque);  

 
 
 
 

else 

 
 

 

 
 
 
 


 
 
 
 
 
 
 
 
 
 
 

return g; 

 
 
 
 
 
 
 
} // Fin del método 

 
 
 
 
 
 
 
 
 
 
 
 
} // Fin de la clase


… 

El pintado de la ficha se realizará de forma similar. Así, suponemos que
tenemos una Ficha, que estará formada por cuatro casillas. La “técnica” consiste en,
al igual que se ha hecho con el Tablero, buscar las coordenadas en las que está la
Ficha colocada (sus cuatro partes componentes) y dibujar cada una de esas
componentes como si fuesen cuatro rectángulos.

Así, podemos pintar la pieza con el siguiente código:


private Graphics pintaFicha(Graphics g, Ficha f) 

 
 
 
 

Coordenada[] coords = f.obtieneCoordenadas(); 
// Cargamos en una variable auxiliary las coordenadas de la ficha que queremos pintar 

for (Coordenada c : cords) 

 
 
 

g.setColor(f.obtieneColorFicha()); 
// Colocamos el color al que le corresponda a esa ficha. 
// El método obtieneColorFicha dependerá de cómo se ha 
// implementado la ficha 

g.fillRect(c.obtieneX()*anchoBloque, c.obtieneY()*anchoBloque, 

anchoBloque, anchoBloque) 

// Pintamos el cuadrado correspondiente   en el color 
// de la pieza o ficha correspondiente 

 

 


return g; 

 
 
 

 
 

 

 
 
}


 
}

Si la Ficha la tenemos incluida en el Tablero (es decir, la clase Tablero tiene un
atributo que es Ficha, que indica la ficha que ahora mismo está en juego), entonces lo
normal y fácil es que modifiquemos el método de pintado del Tablero (método paint
de JPanel) para que simultáneamente pinte el Tablero y la Pieza. Quedaría
aproximadamente de esta manera:

// El metodo paint que nosotros sobreescribimos 
public void paint(Graphics g) 

 
 

pintaTablero(g); 
… 
pintaFicha(g, this.f) 
// Así, f es el atributo privado declarado en la clase así: 
// Ficha f; 
// Se habrá tenido que incluir en el constructor de Tablero esto: 
// f = new Ficha (); 
// Esta invocación dependerá del constructor de Ficha que hayamos creado 
 
  • Links de descarga
http://lwp-l.com/pdf16567

Comentarios de: Ayuda con las librerías gráficas Swing y AWT (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

Revisar política de publicidad