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: