1. 程式人生 > >javaFX初探(Label)

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);
});


執行如下所示: