我的简单应用程序有两个布局窗格。首先是VBox窗格。它是根节点。第二个窗格是子窗格(窗格布局)。我想仅对根窗格使用DropShadow效果。我根据文档做到了。不幸的是,我对两个窗格都有投影效果。对于root和孩子。它是一个错误还是有办法只为一个窗格设置它?我试图使用pane.setEffect(null)但没有成功。当我向窗格添加一些子节点时,新节点也有阴影。
我使用JavaFX8(Windows 7 - 64)。
谢谢。
public void start( Stage stage )
{
VBox vbox = new VBox();
vbox.setPadding( new Insets( 30 ) );
BorderStrokeStyle style = new BorderStrokeStyle( StrokeType.INSIDE, StrokeLineJoin.MITER, StrokeLineCap.BUTT, 10, 0, null );
BorderStroke stroke = new BorderStroke( Color.BLUE, style, CornerRadii.EMPTY, new BorderWidths( 1 ), null );
vbox.setBorder( new Border( stroke ) );
DropShadow dropShadow = new DropShadow();
dropShadow.setOffsetX( 10 );
dropShadow.setOffsetY( 10 );
vbox.setEffect( dropShadow );
Pane pane = new Pane();
pane.setBorder( new Border( stroke ) );
pane.setPrefWidth( 500 );
pane.setPrefHeight( 500 );
vbox.getChildren().add( pane );
stage.setScene( new Scene( vbox ) );
stage.show();
}
此外:
试图使用css: vbox.setStyle(“ - fx-effect:dropshadow(gaussian,grey,10,0.6,10,10);”); 相同的狗屎 - 效果适用于两个窗格。 ((
答案 0 :(得分:0)
我试图回答我自己的问题。
我做了一些简单的调查,看起来它不是一个bug。它试图为窗格提供真实的行为。
如果窗格没有不透明的背景 - 所有窗格的子窗口也应该有阴影(如果所有者窗格有它)。另一方面 - 如果窗格具有纯色背景,则孩子不能有阴影。直到你特意把阴影。
所以......你只需要为窗格提供一个不透明的背景,以避免窗格儿童形状和窗格的阴影。
当然,在docemtntation中注意它会很好。