JavaFX - Texto
Al igual que varias formas, también puede crear un nodo de texto en JavaFX. El nodo de texto está representado por la clase llamadaText, que pertenece al paquete javafx.scene.text.
Esta clase contiene varias propiedades para crear texto en JavaFX y modificar su apariencia. Esta clase también hereda la clase Shape que pertenece al paquetejavafx.scene.shape.
Por lo tanto, además de las propiedades del texto como fuente, alineación, interlineado, texto, etc., también hereda las propiedades básicas del nodo de forma como strokeFill, stroke, strokeWidth, strokeType, etc.
Crear un nodo de texto
Desde la clase Text del paquete javafx.scene.text representa el nodo de texto en JavaFX, puede crear un texto creando una instancia de esta clase de la siguiente manera:
Text text = new Text();
La clase Text contiene una propiedad llamada text de tipo cadena, que representa el texto que se va a crear.
Después de crear una instancia de la clase Text, debe establecer el valor de esta propiedad utilizando el setText() método como se muestra a continuación.
String text = "Hello how are you"
Text.setText(text);
También puede establecer la posición (origen) del texto especificando los valores de las propiedades xey utilizando sus respectivos métodos de establecimiento, a saber setX() y setY() como se muestra en el siguiente bloque de código:
text.setX(50);
text.setY(50);
Ejemplo
El siguiente programa es un ejemplo que demuestra cómo crear un nodo de texto en JavaFX. Guarde este código en un archivo con nombreTextExample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.text.Text;
public class TextExample extends Application {
@Override
public void start(Stage stage) {
//Creating a Text object
Text text = new Text();
//Setting the text to be added.
text.setText("Hello how are you");
//setting the position of the text
text.setX(50);
text.setY(50);
//Creating a Group object
Group root = new Group(text);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Sample Application");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Compile y ejecute el archivo java guardado desde el símbolo del sistema utilizando los siguientes comandos.
javac TextExample.java
java TextExample
Al ejecutarse, el programa anterior genera una ventana JavaFX que muestra el texto especificado de la siguiente manera:
Posición y fuente del texto
De forma predeterminada, el texto creado por la clase de texto tiene la fuente…, el tamaño… y el color negro.
Puede cambiar el tamaño de fuente y el color del texto usando el setFont()método. Este método acepta un objeto delFont clase.
La clase nombrada Font del paquete javafx.scene.textse utiliza para definir la fuente del texto. Esta clase contiene un método estático llamadofont().
Este método acepta cuatro parámetros, a saber:
family - Es de tipo String y representa la familia de la fuente que queremos aplicar al texto.
weight- Esta propiedad representa el peso de la fuente. Acepta 9 valores, que son:FontWeight.BLACK, FontWeight.BOLD, FontWeight.EXTRA_BOLD, FontWeight.EXTRA_LIGHT, LIGHT, MEDIUM, NORMAL, SEMI_BOLD, THIN.
posture- Esta propiedad representa la postura de la fuente (regular o cursiva). Acepta dos valoresFontPosture.REGULAR y FontPosture.ITALIC.
size - Esta propiedad es de tipo double y representa el tamaño de la fuente.
Puede establecer la fuente del texto mediante el siguiente método:
text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));
Ejemplo
El siguiente programa es un ejemplo que demuestra cómo establecer la fuente del nodo de texto en JavaFX. Aquí, configuramos la fuente en Verdana, el peso en negrita, la postura en regular y el tamaño en 20.
Guarde este código en un archivo con el nombre TextFontExample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
public class TextFontExample extends Application {
@Override
public void start(Stage stage) {
//Creating a Text object
Text text = new Text();
//Setting font to the text
text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));
//setting the position of the text
text.setX(50);
text.setY(130);
//Setting the text to be added.
text.setText("Hi how are you");
//Creating a Group object
Group root = new Group(text);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Setting Font to the text");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Compile y ejecute el archivo java guardado desde el símbolo del sistema utilizando los siguientes comandos.
javac TextFontExample.java
java TextFontExample
Al ejecutarse, el programa anterior genera una ventana JavaFX que muestra el texto con la fuente especificada de la siguiente manera:
Trazo y color
La clase Text también hereda la clase Shape del paquete. Por lo tanto, puede utilizarjavafx.scene.shape con el que también puede establecer el trazo y el color del nodo de texto.
Puede establecer el color del texto utilizando el setFill() método de la clase de forma (heredada) de la siguiente manera:
text.setFill(Color.BEIGE);
Del mismo modo, puede establecer el color del trazo del texto utilizando el método setStroke(). Si bien el ancho del trazo se puede establecer mediante el métodosetStrokeWidth() como sigue -
//Setting the color
text.setFill(Color.BROWN);
//Setting the Stroke
text.setStrokeWidth(2);
//Setting the stroke color
text.setStroke(Color.BLUE);
Ejemplo
El siguiente programa es un ejemplo que demuestra cómo establecer el color, strokeWidth y strokeColor del nodo de texto. En este código, establecemos el color del trazo en - azul, el color del texto en - marrón y el ancho del trazo en - 2.
Guarde este código en un archivo con el nombre StrokeExample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
public class StrokeExample extends Application {
@Override
public void start(Stage stage) {
//Creating a Text object
Text text = new Text();
//Setting font to the text
text.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 50));
//setting the position of the text
text.setX(50);
text.setY(130);
//Setting the color
text.setFill(Color.BROWN);
//Setting the Stroke
text.setStrokeWidth(2);
// Setting the stroke color
text.setStroke(Color.BLUE);
//Setting the text to be added.
text.setText("Hi how are you");
//Creating a Group object
Group root = new Group(text);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Setting font to the text");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Compile y ejecute el archivo java guardado desde el símbolo del sistema utilizando los siguientes comandos.
javac StrokeExample.java
java StrokeExample
Al ejecutarse, el programa anterior genera una ventana JavaFX que muestra el texto con los atributos de trazo y color especificados de la siguiente manera:
Aplicar decoraciones al texto
También puede aplicar decoraciones como tachar; en cuyo caso se pasa una línea a través del texto. Puede subrayar un texto utilizando los métodos delText clase.
Puedes tachar el texto usando el método setStrikethrough(). Esto acepta un valor booleano, pasa el valortrue a este método para tachar el texto como se muestra en el siguiente cuadro de código:
//Striking through the text
text1.setStrikethrough(true);
De la misma forma, puede subrayar un texto pasando el valor true al método setUnderLine() como sigue -
//underlining the text
text2.setUnderline(true);
Ejemplo
El siguiente programa es un ejemplo que demuestra cómo aplicar decoraciones como underline o strike througha un texto. Guarde este código en un archivo con el nombreDecorationsExample.java.
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
public class DecorationsExample extends Application {
@Override
public void start(Stage stage) {
//Creating a Text_Example object
Text text1 = new Text("Hi how are you");
//Setting font to the text
text1.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));
//setting the position of the text
text1.setX(50);
text1.setY(75);
//Striking through the text
text1.setStrikethrough(true);
//Creating a Text_Example object
Text text2 = new Text("Welcome to Tutorialspoint");
//Setting font to the text
text2.setFont(Font.font("verdana", FontWeight.BOLD, FontPosture.REGULAR, 20));
//setting the position of the text
text2.setX(50);
text2.setY(150);
//underlining the text
text2.setUnderline(true);
//Creating a Group object
Group root = new Group(text1, text2);
//Creating a scene object
Scene scene = new Scene(root, 600, 300);
//Setting title to the Stage
stage.setTitle("Decorations Example");
//Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Compile y ejecute el archivo Java guardado desde el símbolo del sistema utilizando los siguientes comandos.
javac DecorationsExample.java
java DecorationsExample
Al ejecutarse, el programa anterior genera una ventana JavaFX como se muestra a continuación: