我需要从ControlsFX设置一个Popover样式,但我没有这样做。
我有自己的xxx.css样式表,我添加到一个场景中,我(显然)成功地设置了许多JavaFX控件的样式......
我在样式表中设置了这个(从ControlsFX中的popover.css复制和修改):
.popover > .border {
-fx-stroke: linear-gradient(to bottom, rgba(0,0,0, .3), rgba(0, 0, 0, .7));
-fx-stroke-width: 0.5;
-fx-fill: rgba(30 , 30, 30, .95);
-fx-effect: dropshadow(gaussian, rgba(0,0,0,.2), 10.0, 0.5, 2.0, 2.0);
}
但是Popover永远不会获得边境风格。如何让Popover选择风格?
答案 0 :(得分:4)
由于PopOver
显示在其他窗口中,因此您无法在主要场景上设置样式,但在PopOver
控件上。
如果您查看样式如何应用于其皮肤类PopOverSkin
中的控件:
stackPane = new StackPane();
stackPane.getStylesheets().add(
PopOver.class.getResource("popover.css").toExternalForm());
stackPane.getStyleClass().add("popover");
可以使用以下方式访问此stackPane
:
@Override
public Node getNode() {
return stackPane;
}
您只需要在访问皮肤后立即将样式表添加到该堆栈窗格,即显示popOver时:
popOver.show(...);
((Parent)popOver.getSkin().getNode()).getStylesheets()
.add(getClass().getResource("MyPopOver.css").toExternalForm());