Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/10/2009, 19:20
edsedx4
 
Fecha de Ingreso: junio-2006
Mensajes: 63
Antigüedad: 18 años, 5 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;
    }