Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/05/2017, 14:37
Jose789
 
Fecha de Ingreso: diciembre-2012
Ubicación: Murcia
Mensajes: 329
Antigüedad: 11 años, 4 meses
Puntos: 4
Respuesta: Volver a repintar el area

Cita:
Iniciado por chuidiang Ver Mensaje
Hola:

Tal cual lo tienes, pintar es una ventana que pinta una sola figura. El método paint() solo pinta una figura.

Si quieres que la misma ventana pinte varias figuras tendrías que:
- Dentro de pintar, figura, clor, ancho, alto, x e y deberían ser arrays o listas, de foram que el índice 0 de cad uno de ellos sea una figura, el indice 1 otra, etc.
- En vez de pasar los datos en el constructor de pintar, pon un método añadeFigura(......) que añada una nueva figura a una nueva posición del array (en vez de array, igual sería más comodo un ArrayList o LinkedList, que permite añadir).
- El paint() debería tener un bucle para los arrrays, pintando cada figura, más o menos con el código que tienes ahora.

Para que quede mejor, en vez de 6 arrays (figura, clor, x, y, ancho y alto), podías hacer una clase Figura con estos 6 parámetros. Así tu clase pintar tendría un array de Figura y quedaría el código más limpio.

Saludos.
Gracias por aclararme un poco mas el asunto... pero sigo sin poder mostrar las figuras geométricas. es como si en pintar.java nunca se ejecutara el método paint(Graphicpaints g)

Tengo una nueva clase figura.java

Código Java:
Ver original
  1. package graficos2d;
  2.  
  3. import java.util.Vector;
  4.  
  5. public class figura {
  6.    
  7.     Vector<String> V_tipo = new Vector();
  8.     Vector<String> V_color = new Vector();
  9.     Vector<Integer> V_x = new Vector();
  10.     Vector<Integer> V_y = new Vector();
  11.     Vector<Integer> V_alto = new Vector();
  12.     Vector<Integer> V_ancho = new Vector();
  13.    
  14.    
  15.     public void AddFigura(String tipo,String clor,int x,int y,int height,int width){
  16.        
  17.       V_tipo.add(tipo);
  18.       V_color.add(clor);
  19.       V_x.add(x);
  20.       V_y.add(y);
  21.       V_alto.add(height);
  22.       V_ancho.add(width);
  23.      
  24.       System.out.println(tipo+" "+clor+" "+x+" "+y+" "+height+" "+width);
  25.      
  26.     }
  27.    
  28. }

esto es lo que cambio en pintar.java

Código Java:
Ver original
  1. @Override
  2.     public void paint(Graphics g) {
  3.        
  4.         super.paint(g);
  5.         figura figura = new figura();
  6.        
  7.         for(int c=0; c<figura.V_tipo.size(); c++){
  8.            
  9.             System.out.println("Pintamos");
  10.            
  11.             g.setColor(Color.BLUE);
  12.             g.fillOval(figura.V_x.get(c), figura.V_y.get(c), figura.V_ancho.get(c), figura.V_alto.get(c));
  13.            
  14.         }
  15. }

formulario.java
Código Java:
Ver original
  1. String tipo = String.valueOf(figura.getSelectedItem());
  2.         String clor = String.valueOf(color.getSelectedItem());
  3.        
  4.         int x = Integer.parseInt(X.getText());
  5.         int y = Integer.parseInt(Y.getText());
  6.         int height= Integer.parseInt(alto.getText());
  7.         int width = Integer.parseInt(ancho.getText());
  8.        
  9.         figura figura = new figura();
  10.         figura.AddFigura(tipo, clor, x, y, height, width);

Y esto seria el Main.java

Código Java:
Ver original
  1. public static void main(String[] args) {
  2.        
  3.         formulario form = new formulario();//Interfaz Gráfica
  4.        
  5.         pintar pintar = new pintar();//Interfaz Gráfica donde se ven las figuras geométricas dibujadas
  6.        
  7.     }