![]() | |
Gráficos | |
Anterior | Siguiente | Cap.Anterior | Cap.Siguiente |
Toda la parte gráfica de Java se base en la clase Graphics, por lo que esta sección de Tutorial se dedicará casi exclusivamente al uso de esta clase para manejar formas, fuentes de caracteres e imágenes sobre la pantalla. Y, aunque para el uso normal de gráficos no sea necesario, por lo que el lector puede obviar esa parte, se ha incluido un amplio repaso al sistema de repintado de Java, de forma que si el lector tiene curiosidad por saber exactamente como funciona el sistema de repintado y poder crear sus propios mecanismos, tenga suficiente información como para acometer esa tarea, no sin esfuerzo, pero al menos, sí con los conocimientos suficientes. 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. A la hora de pintar un Componente, se debe tener en cuenta además del tamaño de ese Componente, el tamaño del borde del Componente, si lo tuviera. Por ejemplo, un borde que ocupa un pixel alrededor de un Componente, haría que la coordenada de la esquina superior izquierda pasase de ser (0,0) a ser ahora (1,1), y reduciendo además la anchura y altura totales del Componente en dos pixeles, uno por cada lado. Las dimensiones de un Componente se pueden conocer a través de sus métodos getWidth() y getHeight(). El método getInsets(), permite conocer el tamaño del borde. El siguiente trozo de código muestra la forma de conocer exactamente la anchura y altura de la zona disponible, en un Componente, para poder pintar en su interior. public void paintComponent( Graphics g ) { ... Insets borde = getInsets(); int anchura = getWidth() - borde.left - borde.right; int altura = getHeight() - borde.top - borde.bottom; ... /* La primera posición disponible para pintar sería (x,y), donde x es al menos borde.left, e y es al menos borde.height */ } El ejemplo siguiente, java1501.java, permitirá al lector familiarizarse con el sistema de coordenadas. La figura representa la ventana que aparece en pantalla cuando se ejecuta el ejemplo como aplicación independiente, ya que también se puede ver en un navegador. Cuando se pulsa el botón del ratón con el cursor dentro de la zona enmarcada, aparecerá un punto en esa posición y en la parte inferior de la ventana, se indicarán las coordenadas correspondientes a la posición en que apareció el punto. Si se pulsa exactamente sobre el marco de la zona, las coordenadas sí aparecen, pero el punto no se visualizará debido a que el borde del componente se redibuja posteriormente a las acciones de repintado generadas por el usuario. Si se quiere eliminar este efecto, es suficiente con colocar el Componente en otro JPanel que lo contenga. El programa es muy sencillo, y semejante al ejemplo java1102.java presentado al hablar del AWT. Se implementan dos Componentes, el mayor es la zona rectangular con borde que es el origen de los eventos de ratón que se van a recoger y donde se muestra gráficamente a través de un punto y sus coordenadas, el sitio exacto en que se encontraba el cursor del ratón en el momento de pulsar el botón, y el otro Componente es la etiqueta que se presenta en la parte inferior sonde se vuelve a mostrar la coordenada en que se ha pulsado el ratón. |
![]() Free Advertising from Click2Net! |
|