Pintar Forma después de presionar botón.
Cordial Saludo
Aunque esta pregunta tiene el mismo fin que otra pregunta formulada por mí, cambia la forma de implementar el objetivo.
Primero declaro una clase:
Código Java:
Ver originalclass Object2D {
int TipoObjeto;
static int mLINE = 1;
static int mRECT = 2;
int X0,Y0, X1,Y1;
float ms;
Object2D
(Graphics g,
Color c,
int t,
int x0,
int x1,
int y0,
int y1,
float s
){ mg = g; mc = c;
ms = s; TipoObjeto = t;
X0 = x0; Y0 = y0;
X1 = x1; Y1 = y1;
}
void ViewObject2D(){
g2d.setColor(mc);
g2d.setPaintMode();
if (TipoObjeto==mLINE){
}
if (TipoObjeto==mRECT){
}
}
}
Ahora detallo la forma en que uso la clase:
Creo un vector del tipo de la clase llamado ObjectVector
Creo un método que llena el vector con dos objetos
Creo un método que muestre el contenido del vector
Código Java:
Ver originalpublic class Graficador
extends javax.
swing.
JFrame { /** Creates new form Graficador */
Vector<Object2D> ObjectVector = new Vector<Object2D>();
...
//Crea dos objetos uno tipo Linea y otro tipo Rectangulo
ObjectVector.
addElement(new Object2D
(g,
new Color(0,
0,
255),Object2D.
mLINE,
100,
100,
200,
200,1.0f
)); ObjectVector.
addElement(new Object2D
(g,
new Color(0,
255,
0),Object2D.
mRECT,
150,
150,
200,
200,1.5f
)); }
public void DrawVector(){
//Dibuja el contenido del vector
if(!VectorObjeto.isEmpty()){
for (int i = 0; i<ObjectVector.size();i++){
ObjectVector.elementAt(i).ViewObject2D();
}
}
}
...
Explicación de lo anterior..
El método paint obtiene un objeto de tipo
Graphics
Inicializa una variable de tipo Graphics llamada g1d ..esto con el objetivo de usarlo posteriormente
llena el vector con dos objetos
FillVector(g); y luego dibuja el vector
DrawVector();...
Código Java:
Ver original this.g1d = g;
super.paint(this.g1d);
FillVector(g);
DrawVector();
}
private void jbDibujarActionPerformed
(java.
awt.
event.
ActionEvent evt
) { FillVector(this.g1d);
repaint();
}
Pregunta:
¿Habrá alguna forma de que después de presionar el botón
jbDibujar se dibuje realmente lo requerido y no cuando se llame paint()?;
Es decir que paint solo serviría para inicializar el objeto graphics y dibujar los objetos contenidos en el vector ObjectVector.
Código Java:
Ver original this.g1d = g;
super.paint(this.g1d);
DrawVector();
}
¿Será posible de hacer lo requerido así sea usando otro método?
Gracias...