jfoenix blog javafx controlsfx

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());