Foros del Web » Programación para mayores de 30 ;) » Java »

duda Graphics, funciona pero me toca la ...

Estas en el tema de duda Graphics, funciona pero me toca la ... en el foro de Java en Foros del Web. Hola soy nuevo en el foro y tenía una duda. Mi código es este. Es muy simple. Hace poco programé el juego de hundir la ...
  #1 (permalink)  
Antiguo 09/10/2010, 14:15
 
Fecha de Ingreso: octubre-2010
Mensajes: 4
Antigüedad: 13 años, 6 meses
Puntos: 0
duda Graphics, funciona pero me toca la ...

Hola soy nuevo en el foro y tenía una duda. Mi código es este. Es muy simple. Hace poco programé el juego de hundir la flota de manera gráfica con éxito y quería hacer algo más complicado. Rollo Bomberman o algo así para seguir aprendiendo. Estaba haciendo pruebas con un código muy simple dibujando en un JFrame con el objeto Graphics y no entiendo el porque de estos errores (están al final). Es curioso porque el programa dibuja lo que quiero aún con los errores. Si alguien puede echar una mano


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Dibuixarproves extends JFrame {

MyPanel p=new MyPanel();

public Dibuixarproves(){
setSize(500,500);
addWindowListener(new manejador());
Graphics g = p.getGraphics();
this.add(p);
p.add(new JButton ("merda"));
this.setVisible(true);
p.paint(g);

}

public static void main (String[] args){
new Dibuixarproves();
}
}


class manejador extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(0);
}
}


class MyPanel extends JPanel{

public void paint (Graphics g){
g.setColor(Color.black);
g.drawLine(10, 10, 10, 100);
g.fillRect(300, 300, 200, 200);
}

}

--------------------------------------------------
los errores:
Exception in thread "main" java.lang.NullPointerException
at MyPanel.paint(Dibuixarproves.java:35)
at Dibuixarproves.<init>(Dibuixarproves.java:15)
at Dibuixarproves.main(Dibuixarproves.java:20)
  #2 (permalink)  
Antiguo 09/10/2010, 21:56
 
Fecha de Ingreso: junio-2010
Mensajes: 7
Antigüedad: 13 años, 10 meses
Puntos: 0
De acuerdo Respuesta: duda Graphics, funciona pero me toca la ...

Hola kuentin1, no soy un experto en java, pero he aprendido y muy poco de graficos al igual que tu solo una vez. Revise tu codigo, pues para corregir ese error solo tienes que volver comentario o borrarlo de plano una o dos lineas:

por ejemplo si vuelves comentario la siguiente linea dejara de tronar tu programa:


p.paint(g);

Como tienes una clase y extiende un JPanel y en esa clase invocas la interfaz public void paint(); donde creas los objetos linea, rectangulo. Ya no es necesario la siguiente linea

Graphics g = p.getGraphics();

esta linea lo tienes en la clase principal y al final le agregas a JPanel y eso acasiona tu error. Es que en la clase MyPanel Ya lo haces de forma implicita, asi que quitando estas dos lineas funciona, aunque quites una funciona el que te mencione primero.

Graphics g = p.getGraphics();
p.paint(g);// si quitas solo esta ya funciona aunque la primera linea queda sobrando.

Creo que no deberias de agregar el boton en el mismo JPanel, ya que elpanel al hacer el refresh si arrastras el JFrame el boton desaparece, intenta agragarlo de otra forma.

segun yo quedaria de esta forma, claro el boton sigue en el mismo lugar,solo sera necesario cambiarlo de lugar. ESPERO TE SIRVA DE ALGO.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Dibuixarproves extends JFrame{
MyPanel p = new MyPanel();;

public Dibuixarproves(){
setSize(500,500);
addWindowListener(new manejador());
//Graphics g = p.getGraphics();
this.add(p);
p.add(new JButton ("merda"));
this.setVisible(true);
//p.paint(g);

}

public static void main (String[] args){
new Dibuixarproves();
}
}


class manejador extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(0);
}
}


class MyPanel extends JPanel{

public void paint (Graphics g){
g.setColor(Color.black);
g.drawLine(10, 10, 10, 100);
g.fillRect(300, 300, 200, 200);
}

}



en caso de que tengas dudas intentare responderte, aunque no es seguro poder responderlo, pero intentare, jejeje
  #3 (permalink)  
Antiguo 10/10/2010, 08:00
 
Fecha de Ingreso: octubre-2010
Mensajes: 4
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: duda Graphics, funciona pero me toca la ...

Eis muchas gracias. No me quedaba del todo claro como funcionaba la función paint pero ahora ya sí.
  #4 (permalink)  
Antiguo 10/10/2010, 11:50
 
Fecha de Ingreso: junio-2010
Mensajes: 7
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: duda Graphics, funciona pero me toca la ...

Ha ok, me alegra que haya ayudado en algo, en tu duda.

Etiquetas: graficos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:45.