Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/05/2012, 18:50
alexg88
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Cuadricula en java [Vector]

Buenas,

Java y los layouts pueden ser una pesadilla. El problema es múltiple:

1º - Tienes que poner el layout del contenido como absoluto (se hace pasando null al método setLayout)

2º - Tienes que indicar que el componente Cuadricula empiece en los puntos x,y y que tengan como tamaño width+1 y height+1 (método setBounds). Tiene que ser más 1, o el componente no dibujará bien la línea inferior y derecha.

3º - Tienes que llamar a drawRect con las coordenadas de comienzo 0,0 (esto es porque el componente se situa anteriormente en la posición deseada ya).

Código Java:
Ver original
  1. import java.awt.Graphics;
  2. import javax.swing.JComponent;
  3. import javax.swing.JFrame;
  4.  
  5. /**
  6.  *
  7.  * @author Pacheco
  8.  */
  9.  
  10.  
  11.          
  12.     class Cuadricula extends JComponent{
  13.        
  14.         final int height = 60;
  15.         final int width = 60;
  16.         int posicionx=0;
  17.         int posiciony=0;
  18.  
  19.  
  20.          public Cuadricula(int x,int y){            
  21.              setBounds(x,y,width+1, height+1);  
  22.              
  23.          }
  24.  
  25.     @Override
  26.         public void paintComponent (Graphics g){      
  27.          
  28.             super.paintComponent(g);          
  29.             g.drawRect(0,0,width,height);
  30.         }
  31.     }
  32.  
  33. public class IconosVI {
  34.  
  35.     public static void main (String [] args){
  36.  
  37.         JFrame ventana=new JFrame("V1");
  38.         ventana.setSize(400, 400);
  39.  
  40.         Cuadricula casillas[] = new Cuadricula[5];
  41.  
  42.         casillas[1] = new Cuadricula(0, 0);
  43.         casillas[3] = new Cuadricula(60, 60);
  44.         ventana.getContentPane().add(casillas[1]);
  45.          ventana.getContentPane().add(casillas[3]);
  46.      
  47.        
  48.        
  49.         ventana.getContentPane().setLayout(null);
  50.          
  51.        
  52.  
  53.         ventana.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  54.         ventana.setVisible(true);
  55.        
  56.        
  57.        
  58.     }
  59.  
  60. }