Cada uno de los Componentes de Java tiene su propio sistema de coordenadas, que va desde la posición (0,0) hasta la posición determinada por su anchura total y altura total, menos una unidad; la unidad de medida son pixels de pantalla. Como se puede apreciar en la figura siguiente, la esquina superior izquierda del Componente es la posición que coincide con las coordenadas (0,0). La coordenada en el eje de abscisas se incrementa hacia la derecha y en las ordenadas hacia abajo.
Dibujar
Lo primero que tenemos que hacer para dibujar es prepararnos un lugar donde hacerlo. Para ello se necesita este código:
package prueba1;import java.awt.*;
import java.awt.event.*;
public class Main extends Frame {
public static void main(String[] args) {
new Main();
}
//Método constructor
public Main(){
this.setTitle("Programación Orientada a Objetos. Gráficos");
this.setSize(475,275);
this.setVisible(true);
}
}
Con este código tenemos una ventana en Windows preparada para dibujar lo que nosotros queramos. Probar a redimensionarla… moverla… Problema: No se puede cerrar…
Para eso hay que programar un evento que cierre la ventana. Debajo de setVisible escribir lo siguiente:
//Instrucción para que se pueda cerrar la ventana.La forma de dibujar
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent evt){
System.exit(0);
}
});
Para dibujar necesitamos una instancia de la clase Graphics. Esta clase debe ser asociada al componente en el que queremos dibujar. En nuestro ejemplo, la propia ventana. Debajo de la instrucción this.setVisible(True), vamos a escribir lo siguiente:
…
Graphics g = this.getGraphics();
g.drawLine(0, 0, 100, 100);
...
No vamos a ver nada, ya que esto solo se dibuja una vez, y cada vez que cambiemos la ventana, pase el ratón por encima, se maximize, minimize ya no se vuelve a dibujar.
Para ello deberemos redefinir, es decir, sobrecargar el método paint. Debajo de nuestra clase constructora debemos poner lo siguiente:
public void paint(Graphics g){Ejercicio: Probar a dibujar un cuadrado. Método drawRect
g.drawLine(0, 0, 100, 100);
}
Y el sistema dibujará una línea con esas coordenadas. Veréis como está línea o estos cuadrados no están situados en donde podríamos pensar que está el punto 0,0. El problema está en que por defecto Java hace unos márgenes (llamados insets) que hay que conseguir evitar. Para eso usamos la función translate antes de dibujar nada.
g.translate(this.getInsets().left, this.getInsets().top);
A partir de escribir esta línea todo el sistema de coordenadas se refiere al 0,0 como la esquina superior izquierda de nuestra ventana.
Metódos para pintar figuras- drawLine(int,int)
- drawRect(int,int,int,int)
- drawRoundRect(int,int,int,int,int,int)
- draw3DRect(int,int,int,int,boolean)
- drawOval(int,int,int,int);
- drawArc(int,int,int,int,int,int);
No hay comentarios:
Publicar un comentario