0% encontró este documento útil (0 votos)
8 vistas39 páginas

Introducción a JavaFX: Fundamentos y OOP

Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
8 vistas39 páginas

Introducción a JavaFX: Fundamentos y OOP

Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd

Capítulo 14

JavaFX Basico

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
1
Motivaciones
JavaFX es un nuevo marco para desarrollar programas de
GUI de Java. La API de JavaFX es un excelente ejemplo
de cómo se aplica el principio orientado a objetos.
Este capítulo tiene dos propósitos.
Primero,presentar los conceptos básicos de la programación
de JavaFX.
Segundo, usar JavaFX para demostrar OOP.

Específicamente, este capítulo presenta el marco de


JavaFX y analiza los componentes de la GUI de JavaFX
y sus relaciones.

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
2
Objetivos
 Distinguir entre JavaFX, Swing y AWT.
 Escribir un programa JavaFX simple y comprender la relación entre Escenario,
Escenas y nodos .
 Crear interfaces de usuario utilizando paneles, controles de interfaz de usuario y
formas.
 Usar propiedades de enlace para sincronizar valores de propiedad.
 Usar las propiedades comunes style y rotate para nodos.
 Crear colores usando la clase Color.
 Crear fuentes usando la clase Font.
 Crear imágenes usando la clase de Image y crear vistas de imagen usando la clase
ImageView.
 Diseñar nodos usando Pane, StackPane, FlowPane, GridPane, BorderPane,
HBox y VBox.
 Mostrar texto usando la clase de Text y crear formas usando Line, Círcle,
Rectangle, Ellipse, Arc, Polygon y Polyline.
 Desarrollar los componentes GUI reutilizables ClockPane para visualizar un reloj
analógico.
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
3
JavaFX vs Swing y AWT
Swing y AWT han sido reemplazados por la plataforma JavaFX
para desarrollar aplicaciones “ricas” de Internet.
Cuando se introdujo Java, las clases de GUI se incluyeron en una
biblioteca conocida como Abstract Windows Toolkit (AWT).
AWT está bien para desarrollar interfaces gráficas simples de
usuario, pero no para desarrollar proyectos integrales de GUI.
Además, AWT es propenso a errores específicos de la plataforma.
Los componentes de interfaz de usuario AWT fueron
reemplazados por una biblioteca más robusta, versátil y flexible
conocida como componentes Swing. Los componentes Swing
están pintados directamente en lienzos usando código Java. Los
componentes Swing dependen menos de la plataforma de destino
y usan menos del recurso GUI nativo. Con el lanzamiento de Java
8, Swing es reemplazado por una plataforma de GUI
completamente nueva conocida como JavaFX.
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
4
Estructura Basica de JavaFX
 Extender/heredar Application
 Sobreescribir el método start(Stage)
 Stage, Scene, and Nodes
JavaFX usa la analogía del teatro con la gestión gráfica.
Stage Podemos pensar en el escenario como la plataforma
Scene para admitir escenas y nodos como actores para actuar
en las escenas.
Podemos crear escenarios ( ventanas) adicionales si es
Button necesario.
Por defecto, el usuario puede cambiar el tamaño del
Escenario. Para evitar que el usuario cambie el tamaño
del Escenario, invoque [Link] (false).

MyJavaFX MultipleStageDemo
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
5
Paneles, Controles UI, y formas
En los programas anteriores el botón está Las formas como Línea, Círculo
Elipse, Rectángulo, Ruta,
centrado en la escena y ocupa toda la ventana
Polígono, Polilínea y Texto son
sin importar cómo cambie de tamaño. subclases de Shape (forma).
Podemos cambiar esto estableciendo las
propiedades de posición y tamaño de un botón. Para mostrar una imagen.
Sin embargo, un mejor enfoque es utilizar clases Los controles de interfaz de
contenedor, llamadas panes (paneles), para usuario como Label, TextField,
disponer automáticamente los nodos en una Button, CheckBox, RadioButton
y TextArea son subclases de
ubicación y tamaño deseados. Control.
Coloca nodos dentro de un panel y luego coloca
el panel en una escena.
Un nodo es un componente visual como una
forma, una vista de imagen, un control de UI o un
panel.

Una forma se refiere a un texto, línea,


círculo, elipse, rectángulo, arco,
polígono, polilínea, etc.
Un control de UI se refiere a una
etiqueta, botón, casilla de verificación,
botón de opción, campo de texto, área
de texto, etc.

ButtonInPane
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
6
Mostrar una forma
Este ejemplo muestra un círculo en el centro del panel.

x
Eje Y
(0, 0) Eje X

y
(x, y)
(0, 0) Eje X
Sistema de Sistema de
coordenadas coordenadas
Java Conventional
Eje Y

La coordenada x aumenta de izquierda a


derecha y la coordenada y aumenta hacia
abajo en el sistema de coordenadas de Java.

Si cambia el tamaño de la ventana, el círculo no estará centrado. Para mostrar


el círculo centrado a medida que la ventana cambia de tamaño, las
coordenadas x e y del centro del círculo deben restablecerse al centro del
panel. Esto se puede hacer mediante el uso de propiedad enlazada.
ShowCircle
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
7
Enlazando Propiedades
JavaFX presenta un nuevo concepto llamado propiedad
enlazada que permite que un objeto de destino se vincule a
un objeto de origen.
Si el valor en el objeto de origen cambia, la propiedad de
destino también se cambia automáticamente. El objeto de
destino simplemente se llama objeto de enlace o
propiedad de enlace.
Un objeto de enlace se une con una fuente utilizando el
método bind de la siguiente manera:
[Link] (source);

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
8
Enlazando Propiedades
El método bind (vinculacion) se define en la interfaz
[Link].
Una propiedad enlazada es una instancia de [Link].
Un objeto fuente es una instancia de la interfaz
[Link].
Un ObservableValue es una entidad que envuelve un valor y permite
observar el valor de los cambios.

JavaFX define propiedades enlazadas para tipos primitivos y


cadenas. Para un valor double / float / long / int / boolean, su tipo de
propiedad enlazada es DoubleProperty / FloatProperty /
LongProperty / IntegerProperty / BooleanProperty.
Para una cadena, su tipo de propiedad enlazada es StringProperty.
Estas propiedades también son subtipos de ObservableValue.

Por lo tanto, también se pueden usar como


objetos fuente para las propiedades enlazadas. ShowCircleCentered
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
9
Enlazando Propiedades:
getter, setter, y propiedad getter
Por convención, cada propiedad enlazada en una clase JavaFX tiene un método getter y
setter para devolver y establecer el valor de la propiedad. También tiene un método getter para
devolver la propiedad en sí. La convención el nombre de la propiedad para este método es el
propio nombre del método seguido la palabra Property. Por ejemplo, el método getter de
propiedad enlazada para centerX es centerXProperty().
Llamamos al método getCenterX() como el value getter method, el método setCenterX(double)
como el value setter method, y centerXProperty() como el property getter method.
La figura 14.7a muestra la convención para definir una propiedad de enlace en una clase y la
figura 14.7b muestra un ejemplo concreto en el que centerX es una propiedad de enlace del
tipo DoubleProperty.

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
10
Enlace Uni/Bidireccional

BindingDemo

BidirectionalBindingDemo

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
11
Propiedades y métodos comunes
para los nodos
 style: establece un estilo CSS a JavaFX

 rotate: Rota un nodo


La propiedad de rotación le permite especificar un
ángulo en grados para girar el nodo desde su centro. Si
el grado es positivo, la rotación se realiza en el sentido
de las agujas del reloj; de lo contrario, se realiza en
sentido antihorario. Por ejemplo, el siguiente código gira
un botón 80 grados.
La rotación en un panel provoca que [Link](80);
todos sus nodos queden rotados
también. NodeStyleRotateDemo Run
La clase Node contiene muchos
métodos útiles que se pueden aplicar a
todos los nodos.
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
12
Propiedades y métodos comunes
para los nodos
Las propiedades de estilo de JavaFX son similares a las hojas de estilo en cascada
(CSS) utilizadas para especificar los estilos de los elementos HTML en una página
web.
Las propiedades de estilo en JavaFX se llaman JavaFX CSS.
En JavaFX, una propiedad de estilo se define con un prefijo -fx-. Cada nodo tiene
sus propias propiedades de estilo. Podemos encontrar estas propiedades en
[Link]
La sintaxis para establecer un estilo es styleName:value. Se pueden establecer
múltiples propiedades de estilo para un nodo separándolas por punto y coma (;). Ej.:
[Link]("-fx-stroke: black; -fx-fill: red;");
establece dos propiedades CSS de JavaFX para un círculo. Esta declaración es
equivalente a las siguientes dos declaraciones:
[Link]([Link]);
[Link]([Link]);
Si se utiliza un JavaFX CSS incorrecto, su programa aún se compilará y ejecutará,
pero el estilo seLiang,
ignorará.
Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
13
La Clase Color
Los métodos getter para valores property se
proporcionan en la clase, pero se omiten en
el diagrama UML para abreviar.

El valor rojo de este objeto Color (entre 0.0 y 1.0).


El valor verde de este objeto Color (entre 0.0 y 1.0).
El valor azul de este objeto Color (entre 0.0 y 1.0).
La opacidad (transparencia) de este objeto Color (entre 0.0 y 1.0).
Crea un objeto Color con los valores de rojo, verde, azul y opacidad
especificados.
Crea un objeto Color que es una versión con más brillo de este Color.
Crea un objeto Color que es una versión más oscura de este Color.
Crea un objeto Color opaco con los valores rojos, verdes y azules
especificados.
Crea un objeto Color con los valores de rojo, verde, azul y opacidad
especificados.
Crea un objeto Color con los valores rojos, verdes y azules
especificados en rango de 0 a 255.
Crea un objeto Color con los valores rojos, verdes y azules
especificados enrango de 0 a 255 y una opacidad dada.

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
14
La Clase Font
Los métodos getter para valores property se
proporcionan en la clase, pero se omiten en
el diagrama UML para abreviar.

El tamaño de esta fuente.


El nombre de esta fuente.
La familia de esta fuente.
Crea una fuente con el tamaño especificado.
Crea una fuente con el nombre y tamaño completos de fuente
especificados.
Crea una fuente con el nombre y el tamaño especificados.

Crea una fuente con el nombre, el peso (negrita) y el tamaño especificados.

Crea una fuente con el nombre, el peso, la postura (ITALIC o REGULAR) y


el tamaño especificados.
Devuelve una lista de nombres de familia de fuentes.
Devuelve una lista de nombres completos de fuentes incluyendo familia y
peso..

FontDemo
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
15
La Clase Image

Los métodos getter para valores property se


proporcionan en la clase, pero se omiten en
el diagrama UML para abreviar.

Indica si la imagen está cargada correctamente?


La altura de la imagen.
El ancho de la imagen.
El porcentaje aproximado de carga de la imagen que se completa

Crea una imagen con contenidos cargados desde un archivo o una URL.

La clase [Link] representa una imagen gráfica y se utiliza para cargar una
imagen desde un nombre de archivo especificado o una URL. Por ejemplo,
new Image("image/[Link]") crea un objeto Image para el archivo de imagen [Link] en el directorio
image y
new Image("[Link] crea un objeto Imagen para el
archivo de imagen en la URL en la Web.
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
16
La Clase ImageView
Los métodos getter y setter para valores property y getter
para property propio se proporcionan en la clase, pero se
omiten en el diagrama UML para abreviar.

La altura del cuadro delimitador en el que se cambia el tamaño de la imagen


para que encaje.
El ancho del cuadro delimitador dentro del cual se cambia el tamaño de la
imagen para que encaje.
La coordenada x del origen de ImageView.
La coordenada y del origen de ImageView.
La imagen que se mostrará en la vista de la imagen

Crea un ImageView.
Crea un ImageView con la imagen especificada.
Crea un ImageView con la imagen cargada desde el archivo o URL especificado

[Link] es un nodo para mostrar una imagen. Un ImageView se puede


crear a partir de un objeto Image. Por ejemplo, el siguiente código crea un ImageView a partir de
un archivo de imagen:
Image image = new Image("image/[Link]");
ImageView imageView = new ImageView(image);
También, puede crear un ImageView directamente desde un archivo o una URL de la siguiente
manera:
ImageView imageView = new ImageView("image/[Link]");
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All ShowImage
17
rights reserved.
Paneles de diseño
JavaFX proporciona muchos tipos de paneles para
organizar nodos en un contenedor.

Pane Clase base para paneles de diseño. Contiene el método getChildren()


método que devuelve una lista de nodos en el panel.
StackPane Coloca los nodos uno encima del otro en el centro del panel.

FlowPane Coloca los nodos fila-a-fila horizontalmente o columna-a-verticalmente.

GridPane Coloca los nodos en las celdas de una cuadrícula bidimensional.

BorderPane Coloca los nodos en las regiones superior, derecha, inferior, izquierda y
central.
Hbox Coloca los nodos en una sola fila.

Vbox Coloca los nodos en una sola columna


Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
18
FlowPane
FlowPane organiza los nodos en el panel horizontalmente de izquierda a derecha o
verticalmente de arriba a abajo en el orden en el que se agregaron. Cuando se llena
una fila o una columna, se inicia una nueva fila o columna.
Puede especificar
•la forma en que los nodos se colocan horizontal o verticalmente utilizando una de
las dos constantes: Orientació[Link] u Orientació[Link].
•el espacio entre los nodos en píxeles.
La alineación, orientación, hgap y vgap de los campos de datos son propiedades
vinculantes. Cada propiedad de enlace en JavaFX tiene un método getter (por
ejemplo, getHgap()) que devuelve su valor, un método setter (por ejemplo,
sethGap(double)) para establecer un valor y un método getter que devuelve la
propiedad en sí (p. ej., hGapProperty()).

Para un campo de datos de tipo ObjectProperty<T>,


el método value getter devuelve un valor de tipo T y
el método getter de propiedad devuelve un valor de
propiedad de tipo
Liang,ObjectProperty<T>.
Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
19
rights reserved.
FlowPane
Los métodos getter y setter para valores property y getter
para la propiedad en sí se proporcionan en la clase, pero se
omiten en el diagrama UML para abreviar

La alineación general del contenido en este panel (predeterminado: [Link]).


La orientación en este panel (por defecto: [Link]).

El espacio horizontal entre los nodos (por defecto: 0).

El espacio vertical entre los nodos (predeterminado: 0).

Crea un FlowPane predeterminado.


Crea un FlowPane con un espacio horizontal y vertical especificado.

Crea un FlowPane de flujo con una orientación especificada.

Crea un FlowPane con una orientación especificada, espacio horizontal y espacio


vertical especificados

MultipleStageDemo
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
20
GridPane
Un objeto GridPane organiza los nodos en una
formación de cuadrícula (matriz). Los nodos se
colocan en los índices de columna y fila especificados.

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
GridPane ShowGridPane

Los métodos getter y setter para valores property y getter


para la propiedad en sí se proporcionan en la clase, pero se
omiten en el diagrama UML para abreviar

La alineación general del contenido en este panel (predeterminado: [Link]).


¿Es visible la línea de la cuadrícula? (predeterminado: falso)

El espacio horizontal entre los nodos (por defecto: 0).


El espacio vertical entre los nodos (predeterminado: 0).

Crea un GridPane.
Agrega un nodo a la columna y fila especificadas.

Agrega varios nodos a la columna especificada.

Agrega varios nodos a la fila especificada.

Devuelve el índice de columna para el nodo especificado.

Establece un nodo a una nueva columna. Este método reposiciona el nodo.

Devuelve el índice de fila para el nodo especificado.

Establece un nodo a una nueva fila. Este método reposiciona el nodo.

Establece la alineación horizontal para el nodo hijo en la celda.

Establece la alineación vertical para el nodo hijo en la celda.

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
22
BorderPane
Los métodos getter y setter para valores property y getter para
property propio se proporcionan en la clase, pero se omiten en el
diagrama UML para abreviar.

El nodo colocado en la región superior (predeterminado: nulo).


El nodo colocado en la región derecha (predeterminado: nulo).
El nodo colocado en la región inferior (predeterminado: nulo).
El nodo colocado en la región izquierda (predeterminado: nulo).
El nodo colocado en la región central (predeterminado: nulo).

Crea un BorderPane.
Establece la alineación del nodo en el BorderPane.

Un BorderPane puede colocar nodos en cinco


regiones: superior, inferior, izquierda, derecha y centro,
utilizando los métodos setTop (nodo), setBottom
(nodo), setLeft (nodo), setRight (nodo) y setCenter
(nodo). El diagrama de clases para GridPane se
muestra en la Figura 14.20.

ShowBorderPane
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
23 Run
rights reserved.
HBox
Los métodos getter y setter para valores property y getter para
property propio se proporcionan en la clase, pero se omiten en el
diagrama UML para abreviar.

La alineación general de los hijos en la caja (predeterminado: Pos.TOP_LEFT).


Es redimensionable el tamaño en altura de los hijos hasta la máxima altura de la
caja (predeterminado: true).
Espacio horizontal entre dos nodos (predeterminado: 0).
Crea un HBox predeterminado
Crea un HBox con el espacio horizontal especificado entre los nodos.
Establece el margen para el nodo en el panel.

Un objeto HBox presenta a sus hijos en una única fila


horizontal.
Un objeto VBox presenta sus hijos en una única
columna vertical.
Recuerde que un FlowPane puede diseñar sus hijos en
múltiples filas o columnas múltiples, pero un HBox o un
VBox puede diseñar los elementos hijos solo en una fila
o una columna.
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
24
VBox
Los métodos getter y setter para valores property y getter para
property propio se proporcionan en la clase, pero se omiten en el
diagrama UML para abreviar.

La alineación general de los hijos en la caja (predeterminado: Pos.TOP_LEFT).


Es redimensionable el tamaño en anchura de los hijos hasta la máxima anchura
de la caja (predeterminado: true).
El espacio vertical entre dos nodos (predeterminado: 0).
Crea un VBox predeterminado.
Crea un VBox con el espacio horizontal especificado entre los nodos.
Establece el margen para el nodo en el panel.

ShowHBoxVBox

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
25
La clase Shape
JavaFX proporciona muchas clases de formas (shape) para
dibujar textos, líneas, círculos, rectángulos, elipses, arcos,
polígonos y polilíneas.

La clase Shape es la clase base abstracta que define las


propiedades comunes para todas las formas. Entre ellos se
encuentran las propiedades fill, stroke y strokeWidth. La
propiedad fill (relleno) especifica un color que rellena el interior
de una forma. La propiedad stroke (trazo) especifica un color
que se usa para dibujar el contorno de una forma. La propiedad
strokeWidth especifica el ancho del contorno de una forma.
Esta sección presenta las clases Text, Line, Rectangle, Circle,
Ellipse, Arc, Polygon y Polyline para dibujar textos y formas
simples. Todas estas son subclases shape, como se muestra en la
figura.

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
26
La clase Text
Los métodos getter y setter para valores property y getter para
property propio se proporcionan en la clase, pero se omiten en el
diagrama UML para abreviar.

Define el texto que se mostrará.


Define la coordenada x del texto (predeterminado 0).
Define la coordenada y del texto (predeterminado 0).
Define si cada línea tiene un subrayado debajo (predeterminado falso).
Define si cada línea tiene una línea a través de ella (predeterminado falso).
Define la fuente para el texto.

Crea un Text vacío


Crea un Text con el texto especificado.
Crea un Text con las coordenadas x, e y el texto especificados.

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
27
Texto - Ejemplo

ShowText Run

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
28
La clase Line
Los métodos getter y setter para valores de propiedad y getter
para la propiedad en sí se proporcionan en la clase, pero se
omiten en el diagrama UML para abreviar.

La coordenada x del punto de inicio.


La coordenada y del punto de inicio.
La coordenada x del punto final.
La coordenada y del punto final.

Crea una línea vacía.


Crea una línea con los puntos de inicio y finalización
especificados

Una línea conecta dos puntos con cuatro


parámetros startX, startY, endX y endY, como
se muestra en la figura.

ShowLine Run

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
29
La clase Rectangle
Un rectángulo está definido por los parámetros x, y, ancho, alto, arcWidth y
arcHeight. El punto de la esquina superior izquierda del rectángulo está en (x, y) y el
parámetro aw (ancho del arco) es el diámetro horizontal de los arcos en la esquina, y
ah (arcoAltura) es el diámetro vertical de los arcos en la esquina. La clase Rectangle
define un rectángulo.
Los métodos getter y setter para valores property y getter para
property propio se proporcionan en la clase, pero se omiten en el
diagrama UML para abreviar.

La coordenada x de la esquina superior izquierda del rectángulo (predeterminado 0).


La coordenada y de la esquina superior izquierda del rectángulo (predeterminado 0).
El ancho del rectángulo (por defecto: 0).
La altura del rectángulo (por defecto: 0).
arcWidth del rectángulo (por defecto: 0). arcWidth es el diámetro horizontal de los
arcos en la esquina (ver Figura [Link]).
arcHeight del rectángulo (por defecto: 0). arcHeight es el diámetro vertical de los
arcos en la esquina (ver Figura [Link]).

Crea un Rectángulo vacío


Crea un rectángulo con el punto, el ancho y el alto de la esquina superior izquierda
especificados.

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
30
Rectángulo - Ejemplo

ShowRectangle Run

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
31
La clase Círcle
Los métodos getter y setter para valores property y getter para
property propio se proporcionan en la clase, pero se omiten en el
diagrama UML para abreviar.

La coordenada x del centro del círculo (predeterminado 0).


La coordenada y del centro del círculo (predeterminado 0).
El radio del círculo (predeterminado: 0).

Crea un Círculo vacío.


Crea un círculo con el centro especificado.
Crea un círculo con el centro y el radio especificados

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
32
La clase Ellipse
Los métodos getter y setter para valores property y getter para
property propio se proporcionan en la clase, pero se omiten en el
diagrama UML para abreviar.

La coordenada x del centro de la elipse (predeterminado 0).


La coordenada y del centro de la elipse (predeterminado 0).
El radio horizontal de la elipse (por defecto: 0).
El radio vertical de la elipse (por defecto: 0).

Crea una elipse vacía.


Crea una Elipse con el centro especificado.
Crea una Elipse con el centro y los radios especificados.

radiusX radiusY Una elipse se define por sus


(centerX, centerY) parámetros centerX, centerY,
radiusX y radiusY, como se
muestra en la figura. La clase
Ellipse define una elipse

ShowEllipse Run
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
33
La clase Arc
Los métodos getter y setter para valores property y getter para
property propio se proporcionan en la clase, pero se omiten en el
diagrama UML para abreviar.

La coordenada x del centro de la elipse (predeterminado 0).


La coordenada y del centro de la elipse (predeterminado 0).
El radio horizontal de la elipse (por defecto: 0).
El radio vertical de la elipse (por defecto: 0).
El ángulo de inicio del arco en grados.
La extensión angular del arco en grados.
El tipo de cierre del arco ([Link], [Link],
[Link]).

Crea un arco vacío.


Crea un arco con los argumentos especificados.

Un arco se concibe como parte de una elipse, definida por los parámetros centerX, centerY, radiusX,
radiusY, startAngle, length y un tipo de arco ([Link], ArcType .CHORD o [Link]). El
parámetro startAngle es el ángulo inicial; y la longitud es el ángulo de expansión (es decir, el ángulo
cubierto por el arco). Los ángulos se miden en grados y siguen las convenciones matemáticas habituales (es
decir, 0 grados es en dirección este y ángulos positivos indican rotación en sentido antihorario desde
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
dirección este), como se muestra en la figura siguiente. La clase Arc define un arco
rights reserved.
34
Arco - Ejemplos
radiusY length

startAngle

0 degree

radiusX
(centerX, centerY)

–30° –50°

–20° 20°

(a) Negative starting angle –30° and (b) Negative starting angle –50°
negative spanning angle –20° and positive spanning angle 20°

ShowArc Run

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
35
Las clases Polygon and Polyline
La clase Polygon define un polígono que conecta una secuencia de
puntos, como se muestra en la Figura (a). La clase Polyline es
similar a la clase Polygon, excepto que la clase Polyline no se cierra
automáticamente, como se muestra en la figura (b).

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
36
La clase Polygon
Los métodos getter y setter para valores property y getter para
property propio se proporcionan en la clase, pero se omiten en el
diagrama UML para abreviar.
[Link]

Crea un polígono vacío.


Crea un polígono con los puntos dados.
Devuelve una lista de valores doubles como coordenadas x e y de
los puntos.

ShowPolygon Run

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
37
Caso Práctico: La Clase ClockPane
Este caso práctico desarrolla una clase que muestra un
reloj en un panel

[Link] Los métodos getter y setter para estos campos de datos se


proporcionan en la clase, pero se omiten en el diagrama
-char token UML para abreviar.
+getToken
+setToken ClockPane
-hour: int
+paintComponet
+mouseClicked La hora en el reloj.
-minute: int El minuto en el reloj.
-second: int El segundo en el reloj.

+ClockPane() Construye un reloj predeterminado para la hora actual.


+ClockPane(hour: int, minute: int, Construye un reloj con el tiempo especificado.
second: int)
+setCurrentTime(): void Establece hora, minuto y segundo para la hora actual.
+setWidth(width: double): void Establece el ancho del panel de reloj y vuelve a pintar el reloj
+setHeightTime(height: double): void Establece la altura del panel del reloj y repinta el reloj,

ClockPane
Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
38
Uso de la Clase ClockPane

DisplayClock Run

Liang, Introduction to Java Programming, Tenth Edition, (c) 2015 Pearson Education, Inc. All
rights reserved.
39

También podría gustarte