当前位置: 首页 > 知识库问答 >
问题:

在全屏JavaFX中更改场景

何睿范
2023-03-14

我是JavaFX的新手。我有我的主要场景和次要场景;当我从第一个场景切换到第二个场景时,窗口的条形图变得可见。我该怎么解决呢?

public class ProyectoTeoriaBD1 extends Application {

Stage primaryStage;

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(final Stage primaryStage) {

    this.primaryStage = primaryStage;
    GridPane gp = new GridPane();
    gp.setHgap(10);
    gp.setVgap(10);
    gp.setPadding(new Insets(25,25,25,25));

    Scene firstScene = new Scene(gp);
    Button b = new Button("Change Scene");        
    gp.add(b,1,1);
    primaryStage.setScene(firstScene);
     primaryStage.setFullScreen(true);
    primaryStage.show();



   b.setOnAction(new EventHandler<ActionEvent>() {

        @Override
        public void handle(ActionEvent event) {
           GridPane gp = new GridPane();
           Scene secondScene = new Scene(gp);
           Text txtSecond = new Text("Second Scene");
           gp.add(txtSecond, 1, 1);
           primaryStage.setScene(secondScene);
           primaryStage.setFullScreen(false);
           primaryStage.setFullScreen(true);

        }
    });


}

共有1个答案

傅高逸
2023-03-14

一个完整的、可运行的、可测试的代码可能会很有帮助。还提供您的系统环境详细信息。我在下面测试了您的代码(自己试一下),它可以在JavaFX版本2.2.0的windows 7 64位上运行。
(当您提供更多详细信息时,我将更新我的答案,最后欢迎使用StackOverflow!)

更新:好的,我猜你的主要阶段是在全屏模式开始。在这种情况下,您需要切换全屏模式。见下文。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBoxBuilder;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class Test extends Application {
    private Stage primaryStage;

    @Override
    public void start(Stage primaryStage) {
        this.primaryStage = primaryStage;
        this.primaryStage.setFullScreen(true);
        Button btn = new Button("Login");
        btn.setOnAction(loginClienteHandler());

        StackPane root = new StackPane();
        root.getChildren().add(btn);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("JavaFX version: " + com.sun.javafx.runtime.VersionInfo.getRuntimeVersion());
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public EventHandler loginClienteHandler() {
        EventHandler evh = new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                primaryStage.setScene(new Scene(VBoxBuilder.create().children(new Text("text")).build()));
                primaryStage.sizeToScene();
                primaryStage.setFullScreen(false);
                primaryStage.setFullScreen(true);
            }
        };
        return evh;
    }

    public static void main(String[] args) {
        launch(args);
    }
}
 类似资料:
  • 我对JavaFX有问题。我创建了两个场景和开关按钮。当我点击那个按钮时,我正在改变场景。但之前我将fullscreen设置为true,按下按钮后,windows任务栏会显示片刻。有没有什么方法可以改变场景而不让这个任务栏可见呢?下面是代码: -----main class---- ----DesktopApplication类---- ----MyLayout类----

  • 如何更改全屏窗口的场景并避免显示“按ESC退出全屏”消息? 我正在构建全屏桌面应用程序(触摸屏亭),所以我可以在开始时显示此消息,但现在总是当用户改变场景。 有两个问题: > 在全屏模式下更改场景时,窗口大小将减小。解决方案是切换全屏,但会显示该消息。(在全屏JavaFX中更改场景) “按ESC…”由于安全原因,无法禁用消息(https://forums.oracle.com/forums/thr

  • }`我正在计划在同一舞台上使不同的部分成为自己的场景。如果有任何帮助,我将不胜感激。我正在使用NetBeans8.2。

  • 所以基本上我想做的是改变我的场景的一部分。我想保持一个静态菜单栏在顶部,只改变底部的部分根据哪个菜单按钮正在被点击。这意味着每个“页面”都需要不同的FXML文件和控制器类。 看看可用的JavaFX特性,我认为SubScene可以完成这项工作。但经过进一步的调查,似乎子场景是为3D东西制作的?所以我真的不知道我该做什么。 任何帮助都将不胜感激!

  • 对我如何做到这一点有什么建议吗? 这是我到目前为止编写的代码,但它似乎忽略了Thread.Sleep并且只使第三个代码变为蓝色。