【问题标题】:JavaFX: Table Row Multi-Color Border StyleJavaFX:表格行多色边框样式
【发布时间】:2016-12-09 09:15:38
【问题描述】:

我想使用 JavaFX 在某些表格行周围绘制自定义边框。在下图中你可以看到当前的状态。

我需要做的是用黑线填充黄线之间的空白。

我的第一个想法是定义两种样式并添加它们:

.tableRowStyle1{
    -fx-border-width: 3;
    -fx-border-style: solid;
    -fx-border-color: black;
}

.tableRowStyle2{
    -fx-border-color: yellow;
    -fx-border-style: segments(12, 12, 12, 12);
    -fx-border-width: 3;
}

不幸的是,我总是以黄色透明虚线结束,样式添加到TableRow的样式类的顺序无关紧要。

另一个想法是使用线性和径向渐变。线性渐变不会产生虚线。径向渐变似乎可以做到这一点,但破折号的长度并不均匀,因为它们适用于圆形而不是矩形。

非常感谢有关此主题的任何帮助!

【问题讨论】:

    标签: css javafx tableview tablerow javafx-css


    【解决方案1】:

    如果你使用不同的样式规则,一个会替换另一个。

    您需要在相同的规则中以逗号分隔值指定不同的边框样式。 phase可以用来修改初始偏移量。

    示例

    @Override
    public void start(Stage primaryStage) {
        Region region = new Region();
        region.getStyleClass().add("border-region");
    
        Scene scene = new Scene(region, 300, 300);
        scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());
    
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    

    style.css

    .border-region {
        -fx-background-color: red;
        -fx-border-color: yellow, black;
        -fx-border-style: segments(12, 12), segments(12, 12) phase 12;
        -fx-border-width: 3;
    }
    

    顺便说一句:考虑使用PseudoClass 而不是样式类,因为样式似乎是可以打开/关闭的东西,使用PseudoClass 更容易,因为您不必担心添加样式类不止一次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 2022-01-09
      • 1970-01-01
      • 2014-11-25
      相关资源
      最近更新 更多