problema con el Graphics

Iniciado por bash, 11 Febrero 2015, 03:05 AM

0 Miembros y 1 Visitante están viendo este tema.

bash

buenas a todos tengo un problema

tengo el siguiente codigo

Código (java) [Seleccionar]
package TileMap;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.File;

import javax.imageio.ImageIO;
import javax.swing.JPanel;


public class Tile extends JPanel{

private Graphics2D g2d;
int [][]map1 = new int[][]{
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,2,2,0,0,1,1,1,1,1,0,0,0,0,0,0},
{0,0,0,0,0,2,2,0,0,1,1,1,1,1,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
};

public void paint(Graphics g){
super.paint(g);
g2d = (Graphics2D) g;


Image im = null;


   
for(int row =0; row < 20; row++){
for(int col=0; col< 15; col++)
{
int rc = map1[row][col];
if(rc == 0){
 g2d.setColor(Color.BLACK);

}
if(rc == 1 ){
g2d.setColor(Color.BLUE);



}
if(rc == 2 ){
g2d.setColor(Color.RED);

}
g2d.fillRect(1+col*33,1+row*33, 33, 33);


}

}



}



}



el compila bien y corre bien cuando depuro pero cuando hago el jar me sale en negro la pantalla , alguien me podria ayudar por favor ?

Mod: Tema modificado, recuerda usar etiquetas GeSHi
gracias por responder mis dudas

3n31ch

#1
Si te fijas tu código da error, ya que sobrepasas el tamaño el length de tu arreglo. Diste vuelta el 15 por el 20. debería ser row < 15 , col < 20

Una buena costumbre es utilizar map1.length y map1[row].length.

Código (java) [Seleccionar]
for(int row = 0; row < map1.length; row++){
   for(int col=0; col< map1[row].length; col++) {
       int rc = map1[row][col];
if (rc == 0)  {
           g2d.setColor(Color.BLACK);
       } else if (rc == 1 ) {
           g2d.setColor(Color.BLUE);
        } else if (rc == 2 ) {
           g2d.setColor(Color.RED);
       }
g2d.fillRect(1+col*33,1+row*33, 33, 33);
    }
}




Por cierto, podrías utilizar un if ternario en tu asignación de color. Y no le veo la utilidad a tu Image im = null.

Si te funciona dilo para dar por cerrado el tema  :)

Suerte con el resto.

bash

Buenas si es verdad , la verdad pense en su momento usar .length pero como no sabia que en un array de dos dimensiones podia hacer map1[row].length , lo de la imagen es por que tambien cada vez que trato de cargar una imagen(con ruta relativa o no) me tira una excepcion o no hace  nada , supongo que para eso buscare primero y si no posteare pero gracias eso dato que me disteme ayudo ... estaba bien perdido...  ;-) ;-) ;-) voy a leer mas..

lo de la etiqueta Geshi bueno le di pero en la pc(mac ) no salio quizas es un error es bueno chequear eso.
gracias por responder mis dudas

Usuario Invitado

Para cargar una imagen en AWT:

Código (=java) [Seleccionar]
Image image = ImageIO.read(new File("/ruta/a/tu/imagen"));

Es de vital importancia aprender a indentificar los errores que te muestra el compilador. Con eso te ahorarrás muchos problemas y pérdidas de tiempo.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein