JavaFX Text控件

时间:2020-01-09 10:36:42  来源:igfitidea点击:

JavaFX Text控件可以在JavaFX GUI中显示文本。 JavaFX Text控件由JavaFX类javafx.scene.text.Text表示。我们可以设置文本控件要使用的字体,文本大小,字体修饰和许多其他内容。

由于JavaFX Text控件是JavaFX Shape类的子类,因此Text类具有与其他JavaFX Shape对象相同的可用方法。填充和描边的颜色和样式。

JavaFX Text控件也是JavaFX Node类的子类,因此Text类还具有与其他JavaFX Node相同的所有可用方法,这意味着我们可以在其上设置效果等。

JavaFX Text控件示例

这是一个简单,完整的JavaFX文本示例:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class TextExample extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    public void start(Stage primaryStage) {

        Text text = new Text("This is a JavaFX text.");

        Scene scene = new Scene(new VBox(text), 300, 250);
        primaryStage.setScene(scene);
        primaryStage.show();

    }
}

设定文字

我们可以通过JavaFX Text对象的setText()方法设置文本。这是一个通过setText()设置JavaFX Text控件的文本的示例:

Text text = new Text();

text.setText("This is the text to display");

设定字型

我们可以通过JavaFX Text控件的setFont()方法设置字体。这是一个通过其setFont()方法设置JavaFX Text对象的字体的示例:

Text text = new Text("Some Text");

text.setFont(Font.font("Arial"));

本示例设置Text控件使用的字体,以将文本呈现为Arial字体系列。

本示例中使用的JavaFX Font类是javafx.scene.text.Font类。实际上,Font类还允许我们指定字体粗细和字体大小。这是上面的示例,经过修改后还可以设置JavaFX Text控件的字体粗细和字体大小:

Text text = new Text("Some Text");

text.setFont(Font.font("Arial", FontWeight.BOLD, 36));

本示例将字体粗细设置为粗体,将字体大小设置为36. 本示例中使用的FontWeight类为javafx.scene.text.FontWeight类。

设置填充颜色

作为Shape,我们可以设置JavaFX Text控件的填充颜色。填充颜色是用于绘制文本的"内部"颜色。我们可以通过TextControl的setFill()方法设置填充颜色,该方法将JavaFX Color对象作为参数。这是一个通过setFill()设置JavaFX Text控件的填充颜色的示例:

text.setFill(Color.YELLOW);

设置笔触颜色

作为Shape,我们还可以设置JavaFX Text控件的笔触颜色。笔触颜色是用于绘制文本的"轮廓"或者"边界"颜色。默认情况下,仅使用填充颜色呈现文本,但是设置笔触颜色可以添加不错的效果。我们可以通过TextControl的setStroke()方法设置其笔触颜色,该方法将JavaFX Color对象作为参数。这是一个通过setStroke()设置JavaFX Text控件的笔触颜色的示例:

text.setStroke(Color.GREEN);

文字X和Y位置

JavaFX Text控件的X和Y位置确定Text控件在其父容器元素内的何处显示,前提是父容器遵守此位置(Pane可以,VBox可以)。我们可以通过文本控件的setX()和setY()方法设置X和Y位置。这是设置JavaFX Text控件的X和Y位置的示例:

text.setX(50);
text.setY(25);

文字来源

JavaFX Text控件的原点控制着文本相对于Text控件的Y位置的显示方式。我们可以使用Text setTextOrigin()方法设置原点。这是设置文本原点的示例:

text.setTextOrigin(VPos.BASELINE);

setTextOrigin()方法采用VPos参数。 VPos类包含以下常量,我们可以在以下常量之间进行选择:

  • 垂直位置
  • 垂直底部
  • 中心点
  • 垂直位置

VPos.BASELINE表示Text控件的Y位置被解释为表示所显示文本的Y基线。文本显示在基线的正上方,有些字符在基线的下方延伸。

VPos.BOTTOM表示将Text控件的Y位置解释为表示所显示文本的底部。这低于BASELINE。

VPos.CENTER表示将文本控件的Y位置解释为垂直于文本的中心。

VPos.TOP意味着Text控件的Y位置被解释为垂直于文本的顶部。

多行文字

JavaFX Text控件将根据以下规则将其显示的文本分成多行:

  • 如果文本包含换行符(\ n)。
  • 如果文本宽度超过在"文本"控件上设置的换行宽度。

这是第一个示例,显示包含换行符的文本:

Text text = new Text("This is a JavaFX text.\nLine 2");

因为字符串包含换行符,所以Text控件将在"行"前的文本断开。

这是在JavaFX Text控件上设置文本换行宽度的示例:

Text text = new Text("This is a longer JavaFX text.");
text.setWrappingWidth(80);

JavaFX Text控件将尝试在单词之间打断文本。因此,如果在特定单词之后文本宽度比换行宽度宽,则Text控件将在该单词之前换行,从而使文本比换行宽度更宽。

文字删除线

JavaFX Text控件使我们可以将删除线装饰应用于显示的文本。我们可以通过TextsetStrikethrough()方法启用删除线修饰,并将值true传递给参数。参数值false将禁用删除线效果。这是一个通过setStrikethrough()方法启用JavaFX Text删除线装饰的示例:

text.setStrikethrough(true);

文字下划线

JavaFX Text控件使我们可以在其显示的文本上添加下划线修饰。我们可以通过文本setUnderline()方法启用下划线修饰,并传递true值作为参数。参数值" false"将禁用下划线修饰。这是一个通过setUnderline()方法启用JavaFX Text下划线修饰的示例:

text.setUnderline(true);

字体平滑技术

JavaFX Text控件包含两种可以选择的字体平滑(抗锯齿)技术。第一种技术称为LCD,第二种技术称为GREY。我们可以通过setFontSmoothingType()方法选择Text控件应使用的字体平滑技术。以下是在JavaFX Text控件上将LCD和GREY设置为字体平滑技术的示例:

text.setFontSmoothingType(FontSmoothingType.GRAY);

text.setFontSmoothingType(FontSmoothingType.LCD);

我们必须尝试使用两种字体平滑技术中的哪一种最适合应用程序。