原文链接:
DOC-03-02 标签(Label) | JavaFX中文资料
如何使用标签(Label),该类位于JavaFX API的javafx.scene.control包中,用于展示一个文本元素。接下来会介绍如何让文本元素折叠换行来适应受限空间,添加一个图标,或使用视觉特效
显示了Label的三种常见用法。左边的Label是一个带图标的文本,中间的展示了旋转效果,右边的使用了折叠换行设置。
创建一个Label
JavaFX API为Label提供了三个构造方法
3 4 5 6 7 | //一个空Label Label label1 = new Label(); //一个带文本元素的Label Label label2 = new Label("Search"); //一个带文本和图标的Label Image image = new Image(getClass().getResourceAsStream("labels.jpg")); Label label3 = new Label("Search", new ImageView(image)); |
在你创建了一个Label之后,你可以使用Labeled类的以下方法来设置或者修改文本以及图标
·setText(String text) method——指定文本内容
·setGraphic(Node graphic)——指定图标
setTextFill()方法可以设定文本的填充颜色。例创建一个带文本的Label,为其添加了一个图标,并指定了文本填充颜色
如果为标签同时设置了文本和图标,可以使用setGraphicTextGap()方法来设置它们之间的间距。
另外,你可以使用setTextAlignment()方法改变其对齐方向。你还可以通过setContentDisplay(ContentDisplay value)方法定义图形与文本的相对位置,ContentDisplay常量的可选值为:居左LEFT,居右RIGHT,居中CENTER,居上TOP,居下BOTTOM
你可以使用setFont()方法来对Label的默认字体大小进行修改。代码片段中label1的文本字体大小设置为30 points,并且将字体设置为Arial,label2大小为32 points,字体为Cambria
1 2 3 4 | //使用Font类的构造函数来构造Font对象 label1.setFont(new Font("Arial", 30)); //使用Font类的font静态方法 label2.setFont(Font.font("Cambria", 32)); |
折叠换行文字
当你需要在一个比较小的空间内放置一个Label时,对文本进行折叠换行能够更好地适应布局空间大小。这时需要使用setWrapText方法,并将其值参数为true
启用文本折叠换行
1
2
|
Label label3 = new Label("A label that needs to be wrapped");
label3.setWrapText(true);
|
当label3被添加到应用程序中
折叠换行文本的Label
如果标签的布局区域不仅有宽度限制,还有高度限制,那么你可以指定当无法显示所有的文本内容时标签的显示行为。你可以使用setTextOverrun(OverrunStyle value)方法来实现此功能,其中OverrunStyle用于指示如何处理不能完全呈现出来的文本。如需了解更多详细信息,请参考OverrunStyle类型的API文档
添加视觉特效
尽管一个标签是不能编辑的静态内容,但你依然可以对它添加视觉特效或者变换效果。代码片段中将label2旋转了270度,并垂直移动了它的位置
旋转一个标签
1
2
3
4
|
Label label2 = new Label("Values");
label2.setFont(new Font("Cambria", 32));
label2.setRotate(270);
label2.setTranslateY(50);
|
旋转和位移是JavaFX API中典型的变换效果。此外,你还可以设置缩放效果,它的作用是当用户将鼠标光标悬停于标签上时将其放大显示
对label3设置了缩放效果。当MOUSE_ENTERED事件被触发时,将会通过setScaleX和setScaleY方法设置缩放因子为1.5。当用户将鼠标从标签上移开时会触发MOUSE_EXITED事件,此时缩放比例因子将会还原为1.0,标签将会恢复其原始大小
缩放效果
1
2
3
4
5
6
7
8
9
|
label3.setOnMouseEntered((MouseEvent e) -> {
label3.setScaleX(1.5);
label3.setScaleY(1.5);
});
label3.setOnMouseExited((MouseEvent e) -> {
label3.setScaleX(1);
label3.setScaleY(1);
});
|
显示了label3的两种状态(发大标签效果)