【发布时间】:2017-01-25 02:21:35
【问题描述】:
我目前正在开发一个应用程序。它的视觉结构如下:
- 只有一个阶段。
- 只有一个 Scene 有一个 ApplicationContainer(我自己的类 基本上是一个 StackPane,里面有一个 BorderPane,里面有一个 MenuBar 位于顶部,当前页面位于其中心)。
- 多个ApplicationLayout的
ApplicationLayout 有一个页眉和一个页脚(页脚尚未实现),如下所示:
通过将 StackPane 设置为 BorderPane 的中心,将页面添加到其中,并在此之上添加一个白色 VBox,我设法实现了页面之间的淡入/淡出转换。所以在我进行页面切换之前,我会使用这个白色 VBox 的 FadeTransitions。
我必须这样做,因为 setOpacity() 不会出于某种原因更改文本字段或按钮不透明度。
现在我正在尝试对标题做同样的事情。所以我设置了一个 StackPane 到顶部,并在它上面添加了标题和一个“标题覆盖器”,它应该像以前一样做这个技巧(不能修改标题、箭头或描述的 opacity 属性因为 CSS 覆盖)。
但这一次它不起作用,如果我将标题覆盖物的不透明度设置为除 0 以外的任何值,标题中的内容就不会显示。
我想要完成的是淡出/淡入标题的组件,而不是橙色的 HBox。
编辑:添加了一个对我不起作用的最小示例
public class Main extends Application {
private Boolean buttonPressed = false;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) throws Exception {
BorderPane appWindow = new BorderPane();
appWindow.setStyle("-fx-alignment: center; -fx-padding: 30 0 0 30");
appWindow.setBackground(new Background(new BackgroundFill(Color.PERU, null, null)));
GridPane loginContainer = new GridPane();
appWindow.setCenter(loginContainer);
TextField username = new TextField();
PasswordField password = new PasswordField();
Label userNameDesc = new Label("Username");
Label passwordDesc = new Label("Password");
Button logInBtn = new Button("Log In");
logInBtn.setTranslateX(100);
logInBtn.setTranslateY(20);
logInBtn.setOnAction(event -> {
if (!buttonPressed) {
appWindow.getCenter().setOpacity(30);
buttonPressed = true;
System.out.println("Opacity set to " + appWindow.getCenter().getOpacity());
}
else {
appWindow.getCenter().setOpacity(100);
buttonPressed = false;
System.out.println("Opacity set to " + appWindow.getCenter().getOpacity());
}
});
loginContainer.addColumn(0, userNameDesc, passwordDesc);
loginContainer.addColumn(1, username, password);
loginContainer.add(logInBtn, 1, 2);
Scene scene = new Scene(appWindow, 300, 250);
stage.setScene(scene);
stage.show();
}
}
按下“登录”按钮应该会影响 Gridpane 和 Gridpane 子项的视觉不透明度,但不会。它只是打印正确的不透明度值。
【问题讨论】:
-
你能用简单的方法创建一个minimal reproducible example,即没有“封面”。如果我淡出带有按钮和文本字段的容器,则按钮和文本字段都可以很好地淡出。您应该不需要您描述的任何解决方法。
-
@James_D 刚刚添加了一个对我不起作用的最小示例
-
这并不是您所描述的真正示例(没有淡入淡出过渡等),但它不会做您想要的,因为您设置的不透明度值超出了界限。
标签: css javafx transition fade