JavaFX:Table行多色边框样式
JavaFX: Table Row Multi-Color Border Style
我想使用 JavaFX 在某些 Table 行周围绘制自定义边框。在下图中您可以看到当前状态。
我需要做的是用黑线填充黄线之间的空白。
我的第一个想法是定义两种样式并添加它们:
.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
的样式 class 的顺序无关紧要。
另一个想法是使用线性和径向渐变。线性渐变不会产生虚线。径向渐变似乎可以做到这一点,但破折号的长度并不均匀,因为它们适用于圆形而不是矩形。
非常感谢有关此主题的任何帮助!
如果您使用不同的样式规则,一个将替换另一个。
您需要在同一规则中指定不同的边框样式作为逗号分隔值。 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
而不是样式 class,因为样式似乎是可以转换的东西 on/off,使用 PseudoClass
更容易,因为您不必担心多次添加样式 class。
我想使用 JavaFX 在某些 Table 行周围绘制自定义边框。在下图中您可以看到当前状态。
我需要做的是用黑线填充黄线之间的空白。
我的第一个想法是定义两种样式并添加它们:
.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
的样式 class 的顺序无关紧要。
另一个想法是使用线性和径向渐变。线性渐变不会产生虚线。径向渐变似乎可以做到这一点,但破折号的长度并不均匀,因为它们适用于圆形而不是矩形。
非常感谢有关此主题的任何帮助!
如果您使用不同的样式规则,一个将替换另一个。
您需要在同一规则中指定不同的边框样式作为逗号分隔值。 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
而不是样式 class,因为样式似乎是可以转换的东西 on/off,使用 PseudoClass
更容易,因为您不必担心多次添加样式 class。