本章介绍如何使用javafx.scene.control包下的Label类,这个类用来表现文本。我们会学到如果让文本边行来适应空间大小,添加一个图片,添加一个视觉效果。
下图展示了3个通常的Label用法,左边为文本应用了一个图片,中间的是一个选装的文本,右边的是一个换行的文本。:
创建一个文本
javaFX API为我们提供了3个构造方法,如下:
//An empty label
Label label1 = new Label();
//A label with the text element
Label label2 = new Label("Search");
//A label with the text element and graphical icon
Image image = new Image(getClass().getResourceAsStream("labels.jpg"));
Label label3 = new Label("Search", new ImageView(image));
一旦你创建了一个Label,你就可以给它添加文本和图片内容,如下:
setText:指定文本内容
setGraphic:指定一个图片
setTextFill:指定文本的颜色
Label label1 = new Label("Search");
Image image = new Image(getClass().getResourceAsStream("labels.jpg"));
label1.setGraphic(new ImageView(image));
label1.setTextFill(Color.web("#0076a3"));
如下图所示:
如果你即添加了文本,又添加了图片,那么你可以是用setGraphicTextGap方法来设置两者之前的空隙。
另外,还可以通过setTextAlignment来设置Label内容的位置,也可以通过调用setContentDisplay方法来指定图片的先对位置,参数值是常量,这些常量定义在
ContentDisplay中:LFFT, RIGHT, CENTER, TOP, BOTTOM.
设置字体:
可以通过setFont方法,为Label内容来设置字体:
//Use a constructor of the Font class
label1.setFont(new Font("Arial", 30));
//Use the font method of the Font class
label2.setFont(Font.font("Cambria", 32));
换行:
有时候Label的内容要适应空间的大小,这时候可能就要使用换行。
Label label3 = new Label("A label that needs to be wrapped");
label3.setWrapText(true);
使用效果
Label的内容是静态的,不能修改的,但是我们可以增加一些视觉效果或者变形。
Label label2 = new Label ("Values");
label2.setFont(new Font("Cambria", 32));
label2.setRotate(270);
label2.setTranslateY(50);
下面的代码表现了一个缩放的效果。
label3.setOnMouseEntered((MouseEvent e) -> {
label3.setScaleX(1.5);
label3.setScaleY(1.5);
});
label3.setOnMouseExited((MouseEvent e) -> {
label3.setScaleX(1);
label3.setScaleY(1);
});
运行如下所示: