本文概述
在某些情况下, 我们需要在应用程序界面上提供基于文本的信息。 JavaFX库为此提供了一个名为javafx.scene.text.Text的类。此类提供了多种方法来更改文本的各种属性。我们只需要实例化此类即可在应用程序中实现文本。
物产
下表描述了JavaFX Text的属性。
属性 | 描述 | 设置方法 |
---|---|---|
boundstype | 此属性是对象类型。它确定了计算文本边界的方式。 | setBoundsType(TextBoundsType value) |
font | 文字的字体。 | setFont(Font value) |
fontsmoothingType | 定义请求的字体平滑类型。 | setFontSmoothingType(FontSmoothingType value) |
linespacing | 线之间的垂直间隔(以像素为单位)。它是double类型的属性。 | setLineSpacing(double spacing) |
strikethrough | 这是布尔类型的属性。通过将此属性设置为true, 可以在文本中插入一行。 | setStrikeThrough(boolean value) |
textalignment | 水平文字对齐 | setTextAlignment(TextAlignment value) |
textorigin | 局部坐标系中文本坐标系的原点。 | setTextOrigin(VPos value) |
text | 它是一个字符串类型的属性。它定义了要显示的文本字符串。 | setText(String value) |
underline | 这是布尔类型的属性。通过将此属性设置为true, 可以在文本下划线。 | setUnderLine(boolean value) |
wrappingwidth | 文本的宽度限制。这是一个双精度类型的属性。 | setWrappingWidth(double value) |
x | 文字的X坐标 | setX(double value) |
y | 文字的Y座标 | setY(double value) |
创建一个文本节点
为了创建文本节点, 需要实例化javafx.scene.text.Text类。使用setter方法setText(string)将字符串设置为文本类对象的文本。请按照下面给出的语法实例化Text类。
Text <text_Object> = new Text();
text.setText(<string-text>);
例
下面的示例说明了Text类。这里, 我们没有设置文本的位置, 因此文本将显示在屏幕中央。
package application;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class TextExample extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
// TODO Auto-generated method stub
Text text = new Text();
text.setText("Hello !! Welcome to srcmini");
StackPane root = new StackPane();
Scene scene = new Scene(root, 300, 400);
root.getChildren().add(text);
primaryStage.setScene(scene);
primaryStage.setTitle("Text Example");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
文字的字体和位置
JavaFX使我们能够将各种字体应用于文本节点。我们只需要使用setter方法setFont()设置Text类的属性字体。此方法接受Font类的对象。 Font类属于包javafx.scene.text。它包含一个名为font()的静态方法。这将返回一个Font类型的对象, 该对象将作为参数传递给Text类的setFont()方法。方法Font.font()接受以下参数。
- 家族:它代表字体的家族。它是字符串类型, 应该是系统中存在的适当字体系列。
- 权重:此Font类属性用于字体的权重。有9个值可以用作字体粗细。值是FontWeight.BLACK, BOLD, EXTRA_BOLD, EXTRA_LIGHT, LIGHT, MEDIUM, NORMAL, SEMI_BOLD, THIN。
- 姿势:此Font类属性表示字体的姿势。它可以是FontPosture.ITALIC或FontPosture.REGULAR。
- 大小:这是一个双精度型属性。用于设置字体大小。
setFont()方法的语法如下。
<text_object>.setFont(Font.font(<String font_family>, <FontWeight>, <FontPosture>, <FontSize>)
例
package application;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class TextExample extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
// TODO Auto-generated method stub
Text text = new Text();
text.setX(100);
text.setY(20);
text.setFont(Font.font("Abyssinica SIL", FontWeight.BOLD, FontPosture.REGULAR, 20));
text.setText("Welcome to srcmini");
Group root = new Group();
Scene scene = new Scene(root, 500, 200);
root.getChildren().add(text);
primaryStage.setScene(scene);
primaryStage.setTitle("Text Example");
primaryStage.show();
}
publicstaticvoid main(String[] args) {
launch(args);
}
}
将笔触和颜色应用于文本
笔触是指在文本边界处的填充。 JavaFX允许我们将笔触和颜色应用于文本。 javafx.scene.text.Text类提供了一个名为setStroke()的方法, 该方法接受Paint类对象作为参数。只需传递将在笔触上绘制的颜色即可。我们还可以通过将double类型的宽度值传递给setStrokeWidth()方法来设置笔划的宽度。要设置文本的颜色, javafx.scene.text.Text类提供了另一个名为setFill()的方法。我们只需要传递要在文本中填充的颜色即可。
例
以下示例说明了上述方法的功能。
package application;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class TextExample extends Application{
@Override
publicvoid start(Stage primaryStage) throws Exception {
// TODO Auto-generated method stub
Text text = new Text();
text.setX(100);
text.setY(20);
text.setFont(Font.font("Abyssinica SIL", FontWeight.BOLD, FontPosture.REGULAR, 25));
text.setFill(Color.BLUE);// setting colour of the text to blue
text.setStroke(Color.BLACK); // setting the stroke for the text
text.setStrokeWidth(1); // setting stroke width to 2
text.setText("Welcome to srcmini");
Group root = new Group();
Scene scene = new Scene(root, 500, 200);
root.getChildren().add(text);
primaryStage.setScene(scene);
primaryStage.setTitle("Text Example");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
将装饰应用于文本
我们可以通过设置javafx.scene.text.Text类的属性删除线和下划线来将修饰应用于文本。这两种方法的语法如下。
<TextObject>.setStrikeThrough(Boolean value) //pass true to put a line across the text
<TextObject>.setUnderLine(Boolean value) //pass true to underline the text
我们还可以将JavaFX Effects应用于Text类对象。我们将在接下来的章节中讨论JavaFX效果。
例
package application;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class TextExample extends Application{
@Override
public void start(Stage primaryStage) throws Exception {
// TODO Auto-generated method stub
Text text = new Text();
text.setX(100);
text.setY(40);
text.setFont(Font.font("Liberation Serif", 25));
text.setText("Hello !!");
text.setStrikethrough(true);
Text text1=new Text();
text1.setX(100);
text1.setY(140);
text1.setText("Welcome to srcmini!");
text1.setFont(Font.font("Liberation Serif", 25));
text1.setUnderline(true);
Group root = new Group();
Scene scene = new Scene(root, 500, 200);
root.getChildren().addAll(text, text1);
primaryStage.setScene(scene);
primaryStage.setTitle("Text Example");
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
评论前必须登录!
注册