Java - Sobre la clase Graphics y Paint()

 
Vista:

Sobre la clase Graphics y Paint()

Publicado por gothmog (25 intervenciones) el 15/07/2003 13:52:13
Buenas, estoy haciendo un programa en el cual utilizo el metodo Paint(Graphics g) desde varios lugares, de modo que llevan a cabo funciones completamente distintas. El problema que tengo es que para distinguir entre las tres situaciones, tengo que usar una variable global que la identifique y luego dentro del metodo Paint(Graphics g) hacer un switch. Viene a ser algo asi:

pintaCirculo() { id = 1; }
pintaCuadrado() { id = 2 ; }
pintaTriangulo() { id = 3 ; }

paint (Graphics g){
switch (id) {
case 1: // pinta un circulo
case 2: // pinta un cuadrado
case 3: // pinta un triangulo
}
}

Yo habia pensado en crear un objeto Graphics y darle las propiedades necesarias pero ni es instanciable ni podria pasarselo como parametro a repaint(), solo a paint(Graphics g) y esto no es recomendable. Ademas, tp se si funciona realmente asi.

Bueno, la pregunta es como puedo hacer esto sin necesidad de una variable global?
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

RE:Sobre la clase Graphics y Paint()

Publicado por Oscar (661 intervenciones) el 15/07/2003 18:12:02
porque no haces esto:
paint(Graphics g) {
// codigo
pintaCirculo(g)
///
pintaOtraFigura(g);
}

public void pintaCirculo(Graphics g) {
// .......
}
public void pintaOtraCirculo(Graphics g) {
// .......
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sobre la clase Graphics y Paint()

Publicado por gothmog (25 intervenciones) el 15/07/2003 21:25:32
Bueno, me ayuda a estructurar algo mas el codigo y no tenerlo todo mezclado en el metodo paint(), aunque de tener una variable global veo que no me salva ni dios xDD

Gracias, de todos modos, me es de mucha utilidad ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sobre la clase Graphics y Paint()

Publicado por chuidiang (533 intervenciones) el 16/07/2003 08:56:46
Utiliza el polimorfismo.

Hazte una interface Figura con el metodo dibuja(Graphics).
Hazte tres clases hijas, el cuadrado, el circulo y la otra. Cada una redefine el metodo dibuja(Graphics) para dibujar un cuadrado, un circulo o lo que sea.

La clase que tiene el metodo paint() debe tener un atributo de tipo Figura y los métodos necesarios para cambiar el valor de dicho atributo. En función de lo que quieras dibujar, cambias ese atributo por una instancia de un cuadrado, un circulo o lo que sea (por ejemplo, en el mismo sitio que ahora cambias la variable global)

El metodo paint() unicamente debe llamar a figura.dibuja(g), sin necesidad de ningun switch ni comprobar ninguna variable global.

Este mecanismo es además más versatil, porque en cualquier momento puedes definir más figuras sin necesidad de tocar el código de tu clase que tiene el pain(Graphics), no necesitas ampliar el switch.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sobre la clase Graphics y Paint()

Publicado por gothmog (25 intervenciones) el 16/07/2003 19:45:19
Muy interesante, muchas gracias!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar