■ 关于Text
一个Text类(javafx.scene.text.Text)对象,代表一个JavaFX的文本控件
文本控件可以设定大小,颜色等样式
Text类是Shape类的子类,Shape类又是Node类的子类
因此Text类拥有Shape类和Node类的所有同名方法
Text text = new Text("This is a JavaFX text.");
Scene scene = new Scene(new VBox(text), 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
■ 文本
文本就是Text对象的文本内容
通过 setText() 方法为Text对象设置文本内容
Text text = new Text();
text.setText("This is the text to display");
■ 字体
可以为Text对象设置字体样式
通过 setFont() 方法为Text对象设置字体样式
Text text = new Text("Some Text");
text.setFont(Font.font("Arial"));
Text text = new Text("Some Text");
text.setFont(Font.font("Arial", FontWeight.BOLD, 36));
■ 填充色
Text作为一个Shape对象,可以为其设置填充色,填充色就是字体的颜色
通过 setFill() 方法为Text设置
text.setFill(Color.YELLOW); //效果就是这个text是黄色的字
■ 描边色
Text作为一个Shape对象,可以为其设置描边色(Stroke Color),描边色就是字体边缘的颜色
默认情况下,Text只被渲染填充色,但使用描边色也许会有更好的装饰效果
通过 setStroke() 方法为Text设置描边色,参数是Color类的属性
text.setStroke(Color.GREEN);
■ 坐标
坐标用于设置Text所在母控件中的显示位置,比如pane(VBox不适用)
通过 setX() 和 setY() 方法为Text设置坐标
text.setX(50);
text.setY(25);
■ 原点
原点(Orign)用于设置Text在垂直方向上开始显示文本的位置
通俗讲,就是在垂直方向上,从那个点开始显示整个文本
通过 setTextOrigin() 方法为Text设置在垂直方向的显示位置,参数是VPos类的枚举属性
text.setTextOrigin(VPos.BASELINE); //以基线为原点显示文本
VPos类有以下枚举属性
- VPos.BASELINE: 垂直方向上,显示从文本的基线开始到最底部的部分;
例子
Text msg = new Text("这是一行文本。");
msg.setTextOrigin(VPos.BASELINE);
效果
基线
- VPos.BOTTOM: 垂直方向上,显示从文本的底部开始到最底部的部分,也就是整个文本都不显示
例子
Text msg = new Text("这是一行文本。");
msg.setTextOrigin(VPos.BOTTOM);
效果
- VPos.CENTER: 垂直方向上,显示从文本的最中间到底部的部分
例子
Text msg = new Text("这是一行文本。");
msg.setTextOrigin(VPos.CENTER);
效果
- VPos.TOP: 垂直方向上,显示从文本的最顶部到最底部的部分,也就是显示整个文本
例子
Text msg = new Text("这是一行文本。");
msg.setTextOrigin(VPos.TOP);
效果
注意:
如果涉及的文本是跨行的,则效果只针对文本的第一行
比如基线,它会显示从文本的第一行的基线到文本最后一行的底部的部分
例子
Text msg = new Text("这是第一行文本。\n这是第二行文本。\n这是第三行文本。");
msg.setTextOrigin(VPos.BASELINE);
效果
■ 跨行
Text文本可以跨行显示
以下情况会跨行显示:
- 文本中包含换行符"\n"
Text text = new Text("This is a JavaFX text.\nLine 2");
- 文本宽度超过文本控件上设置的环绕宽度
Text text = new Text("This is a longer JavaFX text.");
text.setWrappingWidth(80);
注意:
文本是以单词为单位换行的
比如文本"this is the first line.", 如果行的宽度正好到line这个单词中间,比如i和n之间,则会在line之前换行,变成
第1行: “this is the first”
第2行: “line.”
■ 删除线
可以为Text的文本内容设置删除线
通过 setStrikethrough() 方法为文本设置删除线
text.setStrikethrough(true); //设置删除线
text.setStrikethrough(false); //设置不显示删除线
■ 下划线
可以为Text的文本内容设置下划线
通过 setUnderline() 方法为Text文本设置下划线
text.setUnderline(true); //设置下划线
text.setUnderline(false); //设置不显示下划线
■ 抗锯齿技术
Text控件有两种抗锯齿技术(font smoothing),LCD和GRAY
通过 setFontSmoothingType() 方法设置Text的抗锯齿技术
text.setFontSmoothingType(FontSmoothingType.GRAY);
text.setFontSmoothingType(FontSmoothingType.LCD);