Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Dibujar grid en canvas java

Hola.

Estoy intentando dibujar un grid en un canvas que tengo en mi programa java. Para ello tengo el siguiente código:

public class MyCanvas extends Canvas {

public MyCanvas() {
setBackground(Color.WHITE);
drawGrid();
}

public void drawGrid(){
int k;
int width = getSize().width;
int height = getSize().height;
int rows = 10;
int columns = 10;
Graphics g = getGraphics();

int htOfRow = height / (rows);
for (k = 0; k < rows; k++) {
g.drawLine(0, k * htOfRow, width, k * htOfRow);
}

int wdOfRow = width / (columns);
for (k = 0; k < columns; k++) {
g.drawLine(k * wdOfRow, 0, k * wdOfRow, height);
}
}

Sin embargo, al ejecutarlo obtengo un null pointer exception en los bucles for y no tengo ni la menor idea de por qué. ¿Alguien puede ayudarme?

Gracias.

mayo 28, 2015 | Unregistered CommenterCoder

Es el getGraphics();
es null en el momento que lo llamas.
sobrescribe el metodo paint y llama tu metodo desde ahi

public class MyCanvas extends Canvas {

public MyCanvas() {
setBackground(Color.WHITE);
drawGrid();
}

public void drawGrid(Graphics g){
int k;
int width = getSize().width;
int height = getSize().height;
int rows = 10;
int columns = 10;


int htOfRow = height / (rows);
for (k = 0; k < rows; k++) {
g.drawLine(0, k * htOfRow, width, k * htOfRow);
}

int wdOfRow = width / (columns);
for (k = 0; k < columns; k++) {
g.drawLine(k * wdOfRow, 0, k * wdOfRow, height);
}

public void paint (Graphics g)
{drawGrid(g);}
}

links que te pueden ayudar:
http://www.javaya.com.ar/detalleconcepto.php?codigo=130&inicio=40
http://recursosformacion.com/wordpress/2013/05/java-para-programadores-5-3los-metodos-graphics-y-paint/
por esas dudas existenciales
http://stackoverflow.com/questions/12175174/paintcomponent-vs-paint-and-jpanel-vs-canvas-in-a-paintbrush-type-gui

no te pongo más que esto los puedes encontrar tu fácilmente, pero son los que me han parecido más adecuados

nos cuentas.

saludos.

mayo 28, 2015 | Registered Commenterjhosep

¡Funcionó! Muchísimas gracias.

Saludos.

mayo 29, 2015 | Unregistered CommenterCoder

de nada, me alegro que te haya servido.

saludos.

mayo 29, 2015 | Registered Commenterjhosep