【问题标题】:How do I draw a border around the text of a JavaFX label?如何在 JavaFX 标签的文本周围绘制边框?
【发布时间】:2014-12-12 23:38:22
【问题描述】:

为了增强我们文本的可读性,有人建议我们对标签控件的文本进行勾勒。我知道您可以描边文本形状,但我们使用了标签。我忘记了原因,但我认为这是因为标签可以为我们做一些文本形状不能做的事情。

如何在标签的字母和单词周围画出轮廓或边框?

我尝试了-fx-stroke,但没有成功,-fx-border 只是在节点周围画了一个边框。有没有办法让这个工作?

【问题讨论】:

    标签: css text javafx label


    【解决方案1】:

    使用 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 — Labeled 中的文本节点

    我使用诸如ScenicView 之类的场景图自省工具找到了.text 选择器。对于 Java 9,JavaFX 实现在类构造函数的代码中为以下类设置样式类:com.sun.javafx.scene.control.LabeledText,它在其中调用 getStyleClass().addAll("text");。所以无论如何,这就是出现有点神奇的子组件类.text 的来源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-19
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多