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

Error al sobreescribir paint() de JPanel... Ayuda

Estas en el tema de Error al sobreescribir paint() de JPanel... Ayuda en el foro de Java en Foros del Web. Hola Aquí les presento un problema que no puedo solucionar (mirar el codigo). Tengo dos clases que heredan de JPanel y le eh sobrecargado el ...
  #1 (permalink)  
Antiguo 27/10/2009, 19:20
 
Fecha de Ingreso: junio-2006
Mensajes: 63
Antigüedad: 17 años, 10 meses
Puntos: 0
Error al sobreescribir paint() de JPanel... Ayuda

Hola

Aquí les presento un problema que no puedo solucionar (mirar el codigo). Tengo dos clases que heredan de JPanel y le eh sobrecargado el método paint(), pero al poner otro componente de Swing no me lo muestra, es por eso que uso el repaint() del componente en paint() del panel. El problema es que al seleccionar una opción del JComboBox hay un parpadeo.

Necesito Ayuda con esto. Díganme cual es el error, quizá muéstrenme otra opción para mostrar gráficos en el panel

Código PHP:
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class 
Panel extends JPanel implements ItemListener{

    static final 
int Ancho=600Alto=400;
    
Panel2 pane2;
    
JComboBox cboColorFondo;
    
JButton btnRestablecer;
    
    public 
Panel(){
        
super();
        
JFrame ventana=new JFrame("Pruebita");
        
setBounds(0,0,Ancho,Alto);
        
setLayout(null);

        
ventana.setBounds(00AnchoAlto);
        
ventana.setLayout(null);
        
ventana.addWindowListener( new WindowAdapter() {
            public 
void windowClosing(WindowEvent e) {
                
System.exit(0);
            }
        });

        
pane2=new Panel2();
        
add(pane2);

        
cboColorFondo=new JComboBox();
        
cboColorFondo.setBounds(20,2012020);
        
cboColorFondo.addItem("Elije un Color");
        
cboColorFondo.addItem("Azul");
        
cboColorFondo.addItem("Rojo");
        
cboColorFondo.addItem("Naranja");

        
cboColorFondo.addItemListener(this);
        
add(cboColorFondo);
        
        
ventana.getContentPane().add(this);
        
ventana.show();
    }
    public 
void paint(Graphics g){
        
Graphics2D aux=(Graphics2D)g;
        
aux.setPaint(new GradientPaint(0,0,Color.darkGray,80,240,Color.lightGray,false));
        
aux.fillRect(0,0getWidth(), getHeight());
        
pane2.repaint();
        
cboColorFondo.repaint();
    }
    public static 
void main(String[] args) {
        
Panel pane=new Panel();
    }
    public 
void itemStateChanged(ItemEvent e) {
        
int color=cboColorFondo.getSelectedIndex();
        switch(
color){
            case 
1pane2.setC1(Color.blue);
                    
pane2.repaint();
                    break;
            case 
2pane2.setC1(Color.red);
                    
pane2.repaint();
                    break;
            case 
3pane2.setC1(Color.orange);
                    
pane2.repaint();
                    break;
        }
    }
}

class 
Panel2 extends JPanel{

    private 
Color c1;

    public 
Panel2(){
        
super();
        
setBounds(0,0,Panel.Ancho,Panel.Alto);
        
setLayout(null);
        
c1=Color.white;
    }
    public 
void paint(Graphics g){
        
g.setColor(getC1());
        
g.fillRect(Panel.Ancho/2-50,Panel.Alto/2-50100100);
    }
    public 
Color getC1() {
        return 
c1;
    }
    public 
void setC1(Color c1) {
        
this.c1 c1;
    }

  #2 (permalink)  
Antiguo 27/10/2009, 20:01
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Error al sobreescribir paint() de JPanel... Ayuda

Hola,

Posiblemente, prueba a agregar la llamada al paint sobrecargado y eliminar los repaint (¿?).

Cita:
Iniciado por edsedx4 Ver Mensaje
Código:
    public void paint(Graphics g){
        super.paint(g);
        Graphics2D aux=(Graphics2D)g;
        aux.setPaint(new GradientPaint(0,0,Color.darkGray,80,240,Color.lightGray,false));
        aux.fillRect(0,0, getWidth(), getHeight());
        // pane2.repaint();
        // cboColorFondo.repaint();
    }
Saludos,
  #3 (permalink)  
Antiguo 27/10/2009, 22:09
 
Fecha de Ingreso: junio-2006
Mensajes: 63
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Error al sobreescribir paint() de JPanel... Ayuda

Gracias x la ayuda, pero no soluciona el problema pues no se ve el cuadrado del panel2 y luego de seleccionar un opción del menú desplegable este se desaparece, es extraño pero debe haber una solución.
  #4 (permalink)  
Antiguo 28/10/2009, 00:58
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Error al sobreescribir paint() de JPanel... Ayuda

Hola,

Código:
    public void paint(Graphics g){
        Graphics2D aux=(Graphics2D)g;
        aux.setPaint(new GradientPaint(0,0,Color.darkGray,80,240,Color.lightGray,false));
        aux.fillRect(0,0, getWidth(), getHeight());
        // pane2.repaint();
        // cboColorFondo.repaint();
        super.paint(g);
    }
Saludos,
  #5 (permalink)  
Antiguo 28/10/2009, 09:39
 
Fecha de Ingreso: junio-2006
Mensajes: 63
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: Error al sobreescribir paint() de JPanel... Ayuda

Gracias eso era solucion
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 22:59.