Используйте 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;
}
[/g3]
Использование образца:
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 для сложных узлов, которые являются родительскими узлами, содержащими дочерние узлы, содержит раздел для дочерних узлов в разделе документации под названием «Основание». Для Метка субструктура не предусмотрена, но если бы она была, она читала бы что-то вроде ниже:
Подструктура
blockquote>
- текст - текстовый узел в Labeled
Я узнал селектор
.text
, используя инструмент интроспекции графика сцены, например ScenicView . Для Java 9 реализация JavaFX устанавливает класс стиля в код в конструкторе класса для следующего класса:com.sun.javafx.scene.control.LabeledText
, где он вызываетgetStyleClass().addAll("text");
. Так или иначе, вот откуда происходит несколько магически возникающий класс подкомпонентов.text
.