HTMLpointHTMLpoint HTMLpoint.com


 Las funciones paint, repaint y update...



En el lenguaje Java es posible dibujar en un aplique simplemente volviendo a definir el método paint. Este método se invoca automáticamente por el sistema cuando la ventana que incluye el aplique pasa a un primer plano. Por lo tanto cada orden gráfica al aplique se dará en el método paint del aplique.

void paint (Graphics g)
{
// Dibujo
}

Cuando el aplique haya dibujado y se quiera visualizar posibles cambios, es posible invocar el método repaint() o el método update(Graphics g) que borra el área en el que el aplique ha dibujado y vuelve a invocar la paint.
El método paint(Graphics g) no se puede invocar directamente.
El aplique no sólo tiene el método paint que se puede volver a definir, sino también los objetos de tipo Component, es decir, todos los GUI. Por lo tanto, para cambiar el aspecto gráfico de cualquier componente gráfico, basta con volver a definir el método paint.
Entre todos los componentes está el ya citado lienzo sobre el que es posible dibujar. Es un objeto de la clase Canvas. Los que están acostumbrados a programar con otros lenguajes esperan que en la paint haya un inicializador del device en el que se va a dibujar y, después, una serie de instrucciones de tipo drawLine, drawBox etc., sin embargo, os tengo que decir que esto no siempre es verdad, es decir, que en los componentes y en los apliques no hay ningún método gráfico.
Llegados a este punto, queda claro incluso que el parámetro g de tipo Graphics de la paint incluye los métodos gráficos que Java puede utilizar y representar, por decirlo de alguna forma, el área en el que se dibujarán las primitivas.
Graphics es una clase que no se puede incluir, sino que es recibida por la paint como parámetro. Por lo tanto se puede utilizar sólo en ella y sus métodos son:

abstract void clearRect(int x, int y, int width, int height)
abstract void clipRect(int x, int y, int width, int height)
abstract void copyArea(int x, int y, int width, int height, int dx, int dy)
abstract Graphics create()
Graphics create(int x, int y, int width, int height)
abstract void dispose()
void draw3DRect(int x, int y, int width, int height,boolean raised)
abstract void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
void drawBytes(byte[] data, int offset, int length, int x, int y)
void drawChars(char[] data, int offset, int length, int x, int y)
abstract boolean drawImage(…) Ne esistono varie versioni
abstract void drawLine(int x1, int y1, int x2, int y2)
abstract void drawOval(int x, int y, int width, int height)
abstract void drawPolygon(int[] xPoints, int[] yPoints, int nPoints)
void drawPolygon(Polygon p)
abstract void drawPolyline(int[] xPoints, int[] yPoints, int nPoints)
void drawRect(int x, int y, int width, int height)
abstract void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
abstract void drawString(AttributedCharacterIterator iterator, int x, int y)
abstract void drawString(String str, int x, int y)
void fill3DRect(int x, int y, int width, int height, boolean raised)
abstract void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
abstract void fillOval(int x, int y, int width, int height)
abstract void fillPolygon(int[] xPoints, int[] yPoints, int nPoints)
void fillPolygon(Polygon p)
abstract void fillRect(int x, int y, int width, int height)
abstract void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
void finalize()
abstract Shape getClip()
abstract Rectangle getClipBounds()
Rectangle getClipBounds(Rectangle r)
abstract Color getColor()
abstract Font getFont()
FontMetrics getFontMetrics()
abstract FontMetrics getFontMetrics(Font f)
boolean hitClip(int x, int y, int width, int height)
abstract void setClip(int x, int y, int width, int height)
abstract void setClip(Shape clip)
abstract void setColor(Color c)
abstract void setFont(Font font)
abstract void setPaintMode()
abstract void setXORMode(Color c1)
String toString()
abstract void translate(int x, int y)


Dentro de poco veremos con detalle todos estos métodos.
En Java2 la clase Graphics ha sido potenciada añadiendo la clase Graphics2D, que la amplía añadiendo muchas posibilidades a la gráfica de Java.
Para tener una pequeña muestra de las potencialidades de Java podéis ver la Demo que está junto a las JDK. Si, por ejemplo, habéis bajado las JDK1.3 y las habéis instalado en c:\jdk1.3, la demo está en:

c:\jdk1.3\demo\jfc\Java2D

y para ponerla en marcha hay que escribir del prompt:

java -jar Java2Demo.jar




  Volver al inicio de la página