JavaFX Text控件
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);
我们必须尝试使用两种字体平滑技术中的哪一种最适合应用程序。