Java - ClearRect me borra el background

 
Vista:

ClearRect me borra el background

Publicado por Daniel (4 intervenciones) el 28/01/2009 00:24:52
Saludos, tengo el siguiente problema:
Tengo un panel que uso como lienzo, la idea es arrastar un circulo, por lo que diubjo un circulo por cada par de coordenadas (x,y) que obtengo del evento mouseDragged, pero para que no me muestre los circulos que van quedadndo atras en el metodo paint hago un clearRect para borrar todo el panel. Segun tengo entendido el crearRect dibuja un rectangulo vacio del color del background pero a mi no me pasa esto, resulta que si me borra todos los circulos anteriores pero me coloca el background gris y lo menos que quiero es que el background seea gris.

En initComponentes() van a ver que le cambie el color de background pero nada.

Y se que el del problema es el clearRect por si no lo coloco si me pone el color de background que le asigne al panel.

Aqui les coloco el codigo del Panel:

public class PnlDibujo extends javax.swing.JPanel {

private int x;
private int y;

/** Creates new form PnlDibujo */
public PnlDibujo() {
initComponents();
x = -1;
y = -1;
Cursor puntero = new Cursor(Cursor.N_RESIZE_CURSOR);
setCursor(puntero);
this.setOpaque(true);

}

@Override
public void paint(Graphics g) {
super.paint(g);

if (x >= 0 && y >= 0) {
g.clearRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.BLUE);
g.fillOval(x, y, 15, 15);
}
}

/
private void initComponents() {
setBackground(java.awt.SystemColor.info);
addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent evt) {
formMouseDragged(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
}

private void formMouseDragged(java.awt.event.MouseEvent evt) {
x = evt.getX();
y = evt.getY();
updateUI();
}

}

Y aca el del frame:

public class FrmPrincipal extends javax.swing.JFrame {

public FrmPrincipal() {
initComponents();
PnlDibujo pnlDibujo = new PnlDibujo();
pnlDibujo.setSize(this.getSize());
add(pnlDibujo);
}

private void initComponents() {

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Panel de dibujo");

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);

pack();
}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FrmPrincipal().setVisible(true);
}
});
}

}

Si alguien sabe la solucion a esto, pues de verdad me seria de mucha ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder