javaFX初探(Label)

本章介紹如何使用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);
});

執行如下所示: