本章介绍如何使用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); });
运行如下所示: