SoloCodigo

Programación General => Java => Mensaje iniciado por: franc en Viernes 20 de Mayo de 2005, 13:48

Título: ¿ Porque No Funciona Este Codigo ?
Publicado por: franc en Viernes 20 de Mayo de 2005, 13:48
Tengo problemas con este codigo, nose porque no sale la rejilla.

Si llamo al metodo pintaRejilla desde el Frame, me da nullPointerException... si lo llamo desde dentro del Panel no me dibuja nada.

Lo que quiero es coger Graphics desde otra funcion que no sea PainComponent.

Código: Text
  1.  
  2. import javax.swing.*;
  3. import java.awt.*;
  4.  
  5. public class NodosFrame extends JFrame {
  6.   NodosPanel nodosPanel = new NodosPanel();
  7.   public NodosFrame(){
  8.     Container cp = getContentPane();
  9.     cp.setLayout(new BorderLayout());
  10.     cp.add(nodosPanel, BorderLayout.CENTER);
  11.     nodosPanel.pintaRejilla();
  12.   }
  13. }
  14.  
  15. class NodosPanel extends JPanel{
  16.   final int ANCHO=600;
  17.   final int ALTO=600;
  18.  
  19.   public NodosPanel(){
  20.     setPreferredSize(new Dimension(600,ALTO));
  21.   }
  22.   public void paintComponent(Graphics g){
  23.     super.paintComponent(g);
  24.     setBackground(Color.BLACK);
  25.     //pintaRejilla();
  26.   }
  27.   public void pintaRejilla(){
  28.     Graphics g = getGraphics();
  29.     g.setColor(Color.WHITE);
  30.    
  31.     for (int i=0;i<ANCHO;i+=20){
  32.       g.drawLine(i, 0, i+1, ALTO);
  33.       g.drawLine(0, i, ANCHO, i);
  34.     }
  35.   }  
  36. }
  37.  
  38.  


Help me :(
Título: Re: ¿ Porque No Funciona Este Codigo ?
Publicado por: fuhrer en Viernes 20 de Mayo de 2005, 22:09
Hola que tal.

Lo único que debes hacer para que funcione es:

Código: Text
  1.  
  2. public void paintComponent(Graphics g){
  3.     super.paintComponent(g);
  4.     setBackground(Color.BLACK);
  5.     pintaRejilla(g);
  6.     }
  7. public void pintaRejilla(Graphics g){
  8.     g.setColor(Color.WHITE);    
  9.     for (int i=0;i<ANCHO;i+=20){
  10.       g.drawLine(i, 0, i+1, ALTO);
  11.       g.drawLine(0, i, ANCHO, i);
  12.       }
  13.     }  
  14.  
  15.  

Hasta luego.