我正在尝试在VBox上使用translateZ属性将面板“移动到屏幕上”。
如果我在根节点上使用setTranslateZ(),这可以正常工作。但是如果我改变root.setTranslateZ(200);到panel.setTranslateZ(200);窗口是空白的。
public class Demo01HelloWorld3D extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Button button = new Button("Press me");
VBox panel = new VBox(button);
panel.setAlignment(Pos.CENTER);
panel.setDepthTest(DepthTest.ENABLE);
VBox root = new VBox(panel);
root.setAlignment(Pos.CENTER);
root.setDepthTest(DepthTest.ENABLE);
root.setTranslateZ(200);
// panel.setTranslateZ(200); <== I want this to work
Scene scene = new Scene(root, 320, 240, true);
primaryStage.setScene(scene);
scene.setCamera(new PerspectiveCamera(false));
primaryStage.show();
}
}
在根节点上设置translateZ
在面板节点上设置translateZ
我尝试过的事情
答案 0 :(得分:2)
panel.setTranslateZ(200);
panel
您推动root
后面的root
,因此root.setStyle("-fx-background-color: transparent;");
会掩盖它。
添加@Override
public void start(Stage primaryStage) throws Exception {
Button button = new Button("Press me");
VBox panel = new VBox(button);
panel.setAlignment(Pos.CENTER);
panel.setDepthTest(DepthTest.ENABLE);
VBox root = new VBox(panel);
root.setAlignment(Pos.CENTER);
root.setDepthTest(DepthTest.ENABLE);
root.setStyle("-fx-background-color: transparent;");
panel.setTranslateZ(200);
Scene scene = new Scene(root, 320, 240, true);
primaryStage.setScene(scene);
scene.setCamera(new PerspectiveCamera(false));
primaryStage.show();
}
并运行:
{{1}}