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

Como hacer funcionar el método paintComponent

Estas en el tema de Como hacer funcionar el método paintComponent en el foro de Java en Foros del Web. Tengo este código: Código: import javax.swing.JPanel; import java.awt.Color; import java.awt.Graphics; public class Pie extends JPanel { int numQ,numD,numE,total; public Pie(int numQ,int numD,int numE) { this.numQ=numQ; ...
  #1 (permalink)  
Antiguo 13/05/2012, 02:54
Avatar de yadderace  
Fecha de Ingreso: marzo-2012
Mensajes: 12
Antigüedad: 12 años, 1 mes
Puntos: 0
Pregunta Como hacer funcionar el método paintComponent

Tengo este código:

Código:
import javax.swing.JPanel;
 import java.awt.Color;
 import java.awt.Graphics;


public class Pie extends JPanel {
	int numQ,numD,numE,total;
    
    public Pie(int numQ,int numD,int numE) {
    	this.numQ=numQ;
    	this.numD=numD;
    	this.numE=numE;
    	this.total=numQ+numD+numE;
    	this.setVisible(true);
    }

    
    public void paintComponent(Graphics g){
    	super.paintComponent(g);
    	int grad=(numQ*360)/total;
    	g.setColor(Color.BLUE);
    	g.fillArc(0,0,100,100,0,grad);
    	
    	int gradDos=(numD*360)/total;
    	g.setColor(Color.WHITE);
    	g.fillArc(0,0,100,100,grad,grad+gradDos);
    	
    	g.setColor(Color.LIGHT_GRAY);
    	g.fillArc(0,0,100,100,grad+gradDos,360);
    	
    
    }
}
Y desde otra clase externa, existe este método:

Código:
public void HacerPie(int monQ,int monD,int monE){
    	JFrame marco=new JFrame("Reporte Estadistico");
    	marco.setResizable(false);
    	marco.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    	marco.setLayout(null);
    	marco.setSize(400,350);
    	marco.setLocationRelativeTo(null);
    
    
    	Pie panelPie=new Pie(monQ,monD,monE);
    	marco.add(panelPie);
    	marco.setVisible(true);
    }
    }
Al parecer, el problema consiste en que no se ejecuta el metodo paintComponent del programa, ya que no dibuja ningun arco. Además pues un System.out.println dentro de ese mismo método y tampoco aparece el mensaje que escribi. Es por ello que induzco que algo esta mal en el método.

Alguien que me heche una mano
  #2 (permalink)  
Antiguo 13/05/2012, 06:12
 
Fecha de Ingreso: abril-2012
Ubicación: Canarias
Mensajes: 41
Antigüedad: 12 años
Puntos: 5
Respuesta: Como hacer funcionar el método paintComponent

Tienes que llamar al método repaint() para que se ejecute el paintComponent
Saludos
  #3 (permalink)  
Antiguo 13/05/2012, 06:14
Avatar de yadderace  
Fecha de Ingreso: marzo-2012
Mensajes: 12
Antigüedad: 12 años, 1 mes
Puntos: 0
Pregunta Respuesta: Como hacer funcionar el método paintComponent

Cita:
Iniciado por Doctrina Ver Mensaje
Tienes que llamar al método repaint() para que se ejecute el paintComponent
Saludos
mmmm...gracias pero
Desde que parte del código lo llamo?
  #4 (permalink)  
Antiguo 13/05/2012, 08:50
 
Fecha de Ingreso: abril-2012
Ubicación: Canarias
Mensajes: 41
Antigüedad: 12 años
Puntos: 5
Respuesta: Como hacer funcionar el método paintComponent

Tienes que llamarlo desde una clase JFrame o JPanel ya que es un método de dichas clases. Por ejemplo, si yo fuera tú, en ese código lo situaría en el constructor de Pie, después de setVisible(true), es decir, algo así:

Código:
import javax.swing.JPanel;
 import java.awt.Color;
 import java.awt.Graphics;


public class Pie extends JPanel {
	int numQ,numD,numE,total;
    
    public Pie(int numQ,int numD,int numE) {
    	this.numQ=numQ;
    	this.numD=numD;
    	this.numE=numE;
    	this.total=numQ+numD+numE;
    	this.setVisible(true);
        repaint();
    }

    
    public void paintComponent(Graphics g){
    	super.paintComponent(g);
    	int grad=(numQ*360)/total;
    	g.setColor(Color.BLUE);
    	g.fillArc(0,0,100,100,0,grad);
    	
    	int gradDos=(numD*360)/total;
    	g.setColor(Color.WHITE);
    	g.fillArc(0,0,100,100,grad,grad+gradDos);
    	
    	g.setColor(Color.LIGHT_GRAY);
    	g.fillArc(0,0,100,100,grad+gradDos,360);
    	
    
    }
}
  #5 (permalink)  
Antiguo 14/05/2012, 16:47
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: Como hacer funcionar el método paintComponent

Pues yo no encuentro tu fallo, se supone que al crearse el panel hace un llamado automático al metodo de paintComponents, por lo cual el repaint no es necesario para empezar a ver algo, solo cuando haces cambios......

tal vez, solo tal vez dale un setSize al panel....y quitale el setVisible al panel , dejalo solo en el frame y quita el repaint() checa haber si asi...
__________________
De nada, hay te encargo +1...

Etiquetas: jpanel, paintcomponent, 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 10:51.