爲了增強我們文本的可讀性,有人建議我們概述標籤控件的文本。我知道你可以對文字形狀進行描邊,但我們使用了標籤。我忘記了爲什麼,但我認爲這是因爲有一個標籤可以爲我們做一個文本形狀不能。如何在JavaFX標籤的文本週圍繪製邊框?
我該如何着手圍繞標籤的字母和單詞繪製輪廓或邊框?
我試過-fx-stroke
但是沒有起作用,-fx-border
剛剛在節點周圍畫了一個邊框。無論如何做這項工作?
爲了增強我們文本的可讀性,有人建議我們概述標籤控件的文本。我知道你可以對文字形狀進行描邊,但我們使用了標籤。我忘記了爲什麼,但我認爲這是因爲有一個標籤可以爲我們做一個文本形狀不能。如何在JavaFX標籤的文本週圍繪製邊框?
我該如何着手圍繞標籤的字母和單詞繪製輪廓或邊框?
我試過-fx-stroke
但是沒有起作用,-fx-border
剛剛在節點周圍畫了一個邊框。無論如何做這項工作?
使用CSS指定標籤文本的輪廓。
/** file: outline.css (place in same directory as OutlinedLabelText) */
.label {
-fx-font-size: 50px;
}
.outline.label .text {
-fx-fill: lightseagreen;
-fx-stroke: firebrick;
-fx-stroke-width: 2px;
}
示例用法:
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class OutlinedLabelText extends Application {
@Override
public void start(Stage stage) throws Exception {
Label label = new Label("Outlined");
label.getStyleClass().add("outline");
StackPane layout = new StackPane(label);
layout.setPadding(new Insets(10));
Scene scene = new Scene(layout, Color.PALEGREEN);
scene.getStylesheets().addAll(getClass().getResource(
"outline.css"
).toExternalForm());
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
上述樣品使用一個未記錄的選擇來選擇用於從標籤樣式的文本。通常,作爲包含子節點的父節點的複雜節點的JavaFX CSS documentation包括標題爲「子結構」的文檔部分中的子節點部分。對於Labeled,不提供子,但如果是這樣,它會讀一些象下面這樣:
內的文本節點子結構
- 文本 - 標記
我發現.text
選擇器使用場景圖內省工具,如ScenicView。對於Java 9,JavaFX實現在類構造函數中爲以下類設置代碼中的樣式類:com.sun.javafx.scene.control.LabeledText
,其中它調用getStyleClass().addAll("text");
。因此無論如何,這就是神奇般地出現的子組件類.text
的來源。
非常感謝。 – Will 2014-12-13 03:59:52