blog - Styling JavaFX Popover
javafx libraries (1)
Necesito diseñar un Popover desde ControlsFX, pero no lo hago.
Tengo mi propia hoja de estilo xxx.css que agrego a una escena, y (obviamente) he estilizado muchos controles JavaFX ...
Lo he establecido en la hoja de estilos (copiado y modificado desde popover.css en ControlsFX):
.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);
}
Pero el Popover nunca obtiene el estilo de frontera. ¿Cómo hago que el Popover elija el estilo?
Como PopOver
se muestra en una ventana diferente, no puede establecer su estilo en la escena principal, sino en el control PopOver
.
Si observa cómo se aplica el estilo al control en su clase de PopOverSkin
:
stackPane = new StackPane();
stackPane.getStylesheets().add(
PopOver.class.getResource("popover.css").toExternalForm());
stackPane.getStyleClass().add("popover");
donde se puede acceder a este stackPane
con:
@Override
public Node getNode() {
return stackPane;
}
solo necesita agregar sus hojas de estilo a ese panel de pila, justo después de que tenga acceso a la máscara, es decir, cuando se muestre popOver:
popOver.show(...);
((Parent)popOver.getSkin().getNode()).getStylesheets()
.add(getClass().getResource("MyPopOver.css").toExternalForm());