gpt4 book ai didi

css - 淡入淡出过渡的 JavaFX 问题

转载 作者:太空宇宙 更新时间:2023-11-04 09:14:49 25 4
gpt4 key购买 nike

我目前正在开发一个应用程序。它的可视化结构如下:

  • 只有一个阶段
  • 只有一个 Scene 有一个 ApplicationContainer 的(我自己的类基本上是一个 StackPane,里面有一个 BorderPane,还有一个菜单栏在顶部,当前页面在它的中心)。
  • 多个ApplicationLayout

ApplicationLayout 有一个页眉和一个页脚(页脚尚未实现),看起来像这样:

enter image description here

通过将 StackPane 设置为 BorderPane 的中心,将页面添加到其中,并在其之上添加一个白色 VBox,我设法实现了页面之间的淡入/淡出过渡。所以在我进行页面切换之前,我使用这个白色 VBox 的 FadeTransitions。

我不得不这样做,因为 setOpacity() 出于某种原因不会更改文本字段或按钮的不透明度。

现在我正在尝试对 header 执行完全相同的操作。所以我在顶部设置了一个 StackPane,并向其添加了标题,并在其顶部添加了一个“标题覆盖器”,据说应该像以前一样做这个技巧(不能修改标题、箭头或描述的不透明度属性因为 CSS 覆盖)。

但是这次它不起作用,如果我将标题覆盖器的不透明度设置为 0 以外的任何值,标题中的内容将不会显示。

我想要完成的是淡出/淡入标题的组件,而不是橙色 HBox。

编辑:添加了一个对我不起作用的最小示例

Capture2

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 子项的视觉不透明度,但事实并非如此。它只是打印正确的不透明度值。

最佳答案

根据documentation :

Opacity is specified as a value between 0 and 1. Values less than 0 are treated as 0, values greater than 1 are treated as 1.

因此将值设置为 30100 没有任何效果:两者都被视为完全不透明(即它们被限制在 1 ).

替换

appWindow.getCenter().setOpacity(30);

appWindow.getCenter().setOpacity(0.3);

将使中心内容部分透明。

关于css - 淡入淡出过渡的 JavaFX 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41842380/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com