Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/10/2010, 21:56
manueldel
 
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