2017-03-13 8 views
0

javafxでシーン全体の明るさを変更しようとしています。これは私のコードは、現時点では次のようになります。シーン全体の明るさを変更する

public void start(Stage primaryStage) { 
    StackPane root = new StackPane(); 

    Rectangle rec1 = new Rectangle(); 
    rec1.setWidth(300); 
    rec1.setHeight(300); 
    rec1.setFill(javafx.scene.paint.Color.RED); 

    ColorAdjust colorAdjust = new ColorAdjust(); 
    colorAdjust.setBrightness(-0.8); 

    root.setEffect(colorAdjust); 

    Scene scene = new Scene(root, 1920, 1080); 
    root.getChildren().add(rec1); 

    primaryStage.setFullScreen(true); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 

問題はこれだけの長方形の明るさが変化するが、全体ではなく、シーンの明るさのような、です。私はまた、 "背景"の明るさを変更する必要があります。それを行う方法はありますか?

答えて

0

これは奇妙なことに、StackPaneにノードを追加することで、奇妙なことに、形状だけでなく色をすべて調整するために修正されているようです。図形だけが表示されている場合は、そのすべてがColorAdjustです。少なくとも1つはNodeである必要があります。以下に1行を変更すると、あなたがやりたいことになります。

root.getChildren().addAll(rec1, new Label()); 

しかし、これは空の多少にもかかわらず、シフト何かによって、プロジェクトに影響を与える可能性があります。レイアウト計算で考慮されないように、invisible and not-managedにすることで回避できます。

Label fix = new Label("Fix colorAdjust whole scene."); 
fix.setVisible(false); 
fix.setManaged(false); 

Scene scene = new Scene(root, 500, 500); 
root.getChildren().addAll(rec1, fix); 
関連する問題