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

[SOLUCIONADO] paintComponent

Estas en el tema de paintComponent en el foro de Java en Foros del Web. Hola gente! Soy nuevo en el foro asi que si hago pongo algo que no debería o mal puesto, lo siento. Bueno, estaba tratando de ...
  #1 (permalink)  
Antiguo 23/09/2015, 16:02
 
Fecha de Ingreso: septiembre-2015
Ubicación: Buenos aires
Mensajes: 21
Antigüedad: 8 años, 7 meses
Puntos: 0
Información paintComponent

Hola gente! Soy nuevo en el foro asi que si hago pongo algo que no debería o mal puesto, lo siento.

Bueno, estaba tratando de hacer un programa el cual al pulsar sobre una ventana, se vaya dibujando una linea. Para hacer esto llegue a este punto:

Cita:
public class Dibujo {

public static void main(String[] args) {

Ventana a = new Ventana();

}

}


class Ventana extends JFrame implements MouseListener{

Pintar Pintado = new Pintar();

public Ventana(){

setVisible(true);
setBounds(100,100,600,600);

add(Pintado);

Pintado.repaint();
}


public void mouseClicked(MouseEvent arg0) {
Pintado.repaint();
}
public void mouseEntered(MouseEvent arg0) {}
public void mouseExited(MouseEvent arg0) {}
public void mousePressed(MouseEvent arg0) {

Pintado.repaint();

}
public void mouseReleased(MouseEvent arg0) {}



}


class Pintar extends JPanel{

int a = 100;

public void paintComponent(Graphics g){

super.paintComponent(g);

g.drawLine(100, 100, 200, a);

a+=200;
}


}

En esas líneas de códigos trate de hacer que aparesca una linea en el JFrame, y luego al clickear sobre el JFrame, se hisiera otra línea mas(Para luego,pasarlo con las coordenadas X e Y del mouse y hacer que se dibujen las líneas), pero no logro que al hacer click se "repinte" y me aparesca la segunda línea.
Alguien sabe y me explicaria como funciona el paintCompoent? Y como debería usarlo en este caso.

Muchas gracias
  #2 (permalink)  
Antiguo 24/09/2015, 00:28
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: paintComponent

Hola:

paintComponent() pinta la ventana (panel en tu caso). paintComponent() no recuerda que había pintado antes, el panel se borra, se llama a paintComponent() y sólo se pinta lo que pinte paintComponent(). En tu paintComponent() sólo pintas una línea, así que sólo sale una línea.

Si quieres que al hacer click aparezca una segunda línea, tu clase debe "recordar" de alguna manera si se ha hecho click o no (guardar este dato en algún atributo de la clase) y paintComponent() debe verificar ese dato para dibujar una línea o dos.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 25/09/2015, 11:24
 
Fecha de Ingreso: septiembre-2015
Ubicación: Buenos aires
Mensajes: 21
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: paintComponent

Otra duda, si quiero que recien se pinte cuando yo haga click? Osea, que no aparesca la linea de una, que el Panel se agrege al hacer click¿Como haría?

Y como hago para que me pinte ensima de lo que ya pinto? Osea tener 2 lineas al mismo tiempo, en vez de una.

Última edición por MatiEzelQ; 25/09/2015 a las 11:48
  #4 (permalink)  
Antiguo 26/09/2015, 15:55
 
Fecha de Ingreso: septiembre-2015
Ubicación: Buenos aires
Mensajes: 21
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: paintComponent

Ya lo logré! :D

puntosX[cuentaPuntos] = e.getX();
puntosY[cuentaPuntos] = e.getY();

cuentaPuntos++;

for(int i=0; i<10000;i++){//Se dibujan las coordenadas guardadas de 0 a 10000.
g.fillOval(puntosX[i]-11, puntosY[i]-35, 30, 30);
}

Etiquetas: dibujar, jframe, paint, programa
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 13:43.