JAVA 2Dfx 2022
JAVA 2Dfx 2022
JAVA 2Dfx 2022
JAVA 2D
MARTHA PATRICIA PIÑA VILLANUEVA
https://docs.oracle.com/javase/8/javase-clienttechnologies.htm
Introducción
La creación de un programa JavaFX comienza con la clase Application,
desde la que se extienden todas las aplicaciones JavaFX. Su clase
principal debe llamar al método launch(), que entonces llamará al
método init() ya continuación al método start(), esperará a que finalice
la aplicación y, a continuación, llame al método stop(). De estos
métodos, sólo el método start() es abstracto y debe anularse.
Escenario
Nodos
Escena
Introducción
Antes de comenzar a dibujar debemos agregar
el Canvas de nuestro Scene, la clase Canvas
hereda de la clase Node por lo que podemos
manipularla y agregarla al Scene como
cualquier otro control, luego debemos
obtener el GraphicsContext, lo hacemos con el
método getGraphicsContext2D()
proporcionado por la clase Canvas.
El estilo de lápiz que se aplica al
exterior de una forma. Este
atributo stroke nos permite
dibujar líneas con cualquier
tamaño de punto y patrón de
sombreado y aplicar
finalizadores y decoraciones a la
línea.
El estilo de relleno que se aplica al
interior de la forma. Este
atributo paint nos permite
rellenar formas con colores
sólidos, gradientes o patrones.
• fillArc()
• fillOval()
• fillPolygon()
• fillRect()
• fillRoundRect()
• strokeArc()
• strokeLine()
• strokeOval()
• strokePolygon()
• strokePolyline()
• strokeRect()
• strokeRoundRect()
Visualización
El punto (0,0) se localiza en la esquina superior derecha
La coordenada X se incrementa hacia la derecha, y la
coordenada Y hacia abajo.
Aunque el sistema de coordenadas para una ventana o una
pantalla podría ser muy distinto que para una impresora,
estas diferencias son invisibles para los programas Java. Las
conversiones necesarias entre el espacio de usuario y el
espacio de dispositivo se realizan automáticamente durante el
dibujado.
Colores
Los colores se pueden utilizar de la siguiente forma:
gc.setStroke(Color.BLUE);
gc.setFill(Color.BROWN);
Métodos para dibujar
• Rectángulos (class to the package javafx.scene.shape.)
90O
180O 0O
270O
• Línea
@Override
public void start(Stage primaryStage) {
/* CREACIÓN DE LA VENTANA Y DE LOS CONTENEDORES PRINCIPALES */
// Contenedor principal donde se alojarán todos los elementos
Group root = new Group();
// Creación de una zona de dibujo (canvas) de 200 x 150 puntos
Canvas canvas = new Canvas(600, 400);
// Obtención del contexto gráfico del canvas anterior que permitirá realizar posteriormente los dibujos
GraphicsContext gc = canvas.getGraphicsContext2D();
// Se añade el canvas al contenedor principal (root)
root.getChildren().add(canvas);
// Creación del área (scene) correspondiente al contenido que tendrá la ventana, de 600 x 400 puntos, con color gris claro, indicando que el
// elemento root va a ser el contenedor principal de este espacio
Scene scene = new Scene(root, 600, 400, Color.LIGHTGRAY);
// Se asocia la ventana (scene) al parámetro primaryStage (escenario
// principal). El parámetro primaryStage se recibe en este método start
primaryStage.setScene(scene);
// Título que se aparecerá en la ventana
primaryStage.setTitle("Dibujo de Linea");
// Orden para que se muestre la ventana
primaryStage.show();
gc.setStroke(Color.BLUE);
// Cambiar a partir de este momento el grosor de las líneas a 5 puntos
gc.setLineWidth(5);
// Dibujar una línea desde la posición (0,0) a (100,40)
gc.strokeLine(0, 0, 100, 100);
}
@Override
public void start(Stage primaryStage) {
@Override
public void start(Stage primaryStage) {
Group root = new Group();
Canvas canvas = new Canvas(600, 600);
GraphicsContext gc = canvas.getGraphicsContext2D();
root.getChildren().add(canvas);
Scene scene = new Scene(root, 600, 600, Color.LIGHTGRAY);
primaryStage.setTitle("Dibujo de Poligonos");
primaryStage.show();
gc.setLineWidth(5.0);
gc.setStroke(Color.BLUE);
gc.setFill(Color.RED);
gc.beginPath();
gc.appendSVGPath("M 226 279 L 196 388 L 82 386 L 177 449 L 139 557 L 229 486 L 320 555 L 280 448 L 373 383 L 259 388 L 226 279
z");
gc.closePath();
gc.fill();
gc.stroke();
}
public static void main(String[] args) {
launch(args);
}
}
Ejemplo de figuras
Practica Hacer una computadora
X =0 X =500
100 200 300 400
Y=0
100
200
300
400
Y =500
Y= 500
Texto en Java 2D
Si queremos mostrar una cadena de texto estática,
podemos dibujarla directamente a través de
Graphics2D usando el método drawString. Para
especificar la fuente, podemos usar el método
setFont de Graphics2D.
Si queremos implementar nuestras propias rutinas
de edición de texto o necesitamos más control
sobre la distribucción del texto que la que
proporcionan los componentes de texto,
podemos usar las clases del paquete
java.awt.font.
Fuentes
Las formas que una fuente usa para representar
los caracteres de una cadena son llamadas
glyphs. Un carácter particular o una
combinación de caracteres podría ser
representada como uno o más glyphs. Por
ejemplo, á podría ser representado por dos
glyphs, mientras que la ligadura fi podría ser
representada por un sólo glyph.
Ejercicios
• Label • Tree View
• Button • Combo Box
• Radio Button • Separator
• Toggle Button • Slider
• Checkbox • Progress Bar and Progress
• Choice Box Indicator
• Text Field • Hyperlink
• Password Field • Tooltip
• Scroll Bar • HTML Editor
• Scroll Pane • Titled Pane and Accordion
• Scroll Pane • Menu
• List View • Color Picker
• Table View • File Chooser
• Customization of UI
Controls
Manejo de Eventos
http://acodigo.blogspot.com/2017/06/eventos-en-javafx.html
https://docs.oracle.com/javafx/2/ui_controls/overview.htm
https://docs.oracle.com/javafx/2/
Eventos
• Un evento es una encapsulación de una
información que puede ser enviada a la
aplicación de manera asíncrona.
• Los eventos pueden corresponder a acciones
físicas (ratón y teclado) y a acciones lógicas.
Eventos
Los eventos en la API JavaFX son parte importante en el desarrollo de una
aplicación, un evento se produce cuando el usuario interactúa con l aplicación,
por ejemplo, al hacer clic sobre un botón, al mover el mouse sobre algún Node
de la escena, al presionar una tecla, o al seleccionar un elemento de una lista,
entre muchas otras cosas.
• KeyEvent: Esta clase es para los eventos producidos por el teclado, puede
ser, presionar o liberar un tecla.
https://docs.oracle.com/javafx/2/transformations/jfxpub-transformations.htm
Traslación
Otra forma de aplicar transformaciones es por medio de las
correspondientes propiedades, a través de sus métodos set,
ejemplo: setTranslateX(), setTranslateY(), setRotate(), etc.
Esta transformación mueve el Node en las
coordenadas X e Y la cantidad establecida, si el
objeto se encuentra en la posición (5, 2) y la
traslación es (3, 4) la nueva posición se calcula
como: (5+3, 2+4) = (8, 6).
Translate()
Translate(double x, double y)
Translate(double x, double y, double z)
Usando el constructor vacío la traslación por
defecto es (0,0)
Rotación
Esta transformación hace girar los pixeles que forman el Node en un ángulo
indicado, también es posible indicar el punto pivote para la rotación.
Rotate()
Rotate(double angle)
Rotate(double angle, double pivotX, double pivotY)
Rotate(double angle, double pivotX, double pivotY, double pivotZ)
Rotate(double angle, double pivotX, double pivotY, double pivotZ, Point3D
axis)
Rotate(double angle, Point3D axis)
Primero indicamos el ángulo de rotación seguido de
las coordenadas del punto pivote, si lo deseamos.
Escalación
Esta transformación afecta el tamaño de Node, e igual que la rotación
también podemos establecer un punto pivote sobre el cual aplicarla.
Scale()
Scale(double x, double y)
Scale(double x, double y, double z)
Scale(double x, double y, double pivotX, double pivotY)
Scale(double x, double y, double z, double pivotX, double pivotY,
double pivotZ)
El valor por defecto para las coordenadas (X, Y, Z) es 1.0, para el punto
pivote es 0.0.