Java - Usar el metodo paint de Graphics 2D

 
Vista:

Usar el metodo paint de Graphics 2D

Publicado por Santiago (1 intervención) el 26/11/2005 15:14:49
El problema es el siguiente: yo tengo una matriz y cuando se llama al metodo paint se pintan todas las posiciones, que vendrian a ser fichas de un tablero, pero yo quiero pintar solamente 2 posiciones de la matriz MGrafica[4][4] y MGrafica[4][5] y las demas que queden igual, osea en blanco y negro. Como se hace esto???????
el que me pueda ayudar mil gracias

CODEimport java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

class Grafico2 extends JFrame
{

public Ficha MGrafica[][] = new Ficha [8][8];

Grafico2(String titulo)

{

super(titulo);
getContentPane().setPreferredSize(new Dimension (400,350));
getContentPane().setLayout(new GridLayout(8,8));

int i=0;
int j=0;

for ( i=0;i<8;i++)
for ( j=0;j<8;j++)

{

MGrafica[i][j]=new Ficha();

}

for ( i=0;i<8;i++)
{
MGrafica[i][0] .setBackground(i%2==0 ? Color.BLACK: Color.WHITE);
}
for (i=0;i<8;i++)
{
MGrafica[i][1] .setBackground(i%2==0 ? Color.WHITE: Color.BLACK);
}
for (i=0;i<8;i++)
{
MGrafica[i][2] .setBackground(i%2==0 ? Color.BLACK: Color.WHITE);
}
for (i=0;i<8;i++)
{
MGrafica[i][3] .setBackground(i%2==0 ? Color.WHITE: Color.BLACK);
}
for ( i=0;i<8;i++)
{
MGrafica[i][4] .setBackground(i%2==0 ? Color.BLACK: Color.WHITE);
}
for (i=0;i<8;i++)
{
MGrafica[i][5] .setBackground(i%2==0 ? Color.WHITE: Color.BLACK);
}
for (i=0;i<8;i++)
{
MGrafica[i][6] .setBackground(i%2==0 ? Color.BLACK:
Color.WHITE);
}
for (i=0;i<8;i++)
{
MGrafica[i][7] .setBackground(i%2==0 ? Color.WHITE: Color.BLACK);
}


for (i=0;i<8;i++)
for (j=0;j<8;j++)

if (MGrafica[i][j] != null )

{

getContentPane().add(MGrafica[i][j]);

}

super.pack();
super.show();

}

}

class Ficha extends JPanel
{

public void paint(Graphics g)
{


paintComponent(g);

((Graphics2D)g).setPaint(Color.RED );
((Graphics2D)g).fill( new Ellipse2D.Float(0,0,getWidth(),getHeight()) );
((Graphics2D)g).setStroke(new BasicStroke(1));
((Graphics2D)g).draw( new Ellipse2D.Float(0,0,getWidth(),getHeigh()) );

}

public static void main(String argv[])
{

Grafico2 G2 = new Grafico2("reversi");

}

}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Usar el metodo paint de Graphics 2D

Publicado por chuidiang (950 intervenciones) el 28/11/2005 05:13:47
Hola:

Lo normal es en cada paint() pintar todo el tablero. Tanto las casillas vacias como las que tienes fichas. Esto es así porque si alguien abre una ventana de otra aplicacion encima de tu tablero y luego la cierra, java llamará a tu método paint() para redibujar el tablero. Si solo dibujas las fichas, las casillas vacias del tablero quedarán con un cacho de la ventana de la otra aplcación.

Otra opción es mantener todo el tablero en un BufferedImage. Ahi puedes pintar sólo lo que quieras, sabiendo que nadie te va a borrar nada. Luego poner de golpe el BufferedImage sobre la ventana que sea con graphics.drawImage().

Si haces esto de la imagen, .el método que borra todo es el update(Graphics). Puedes redefinirlo para que llame a tu paint() sin borrar nada. De esta forma evitarás el parpadeo que se produce al borrar y repintar.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar