【问题标题】:Change scene in full screen JavaFX在全屏 JavaFX 中更改场景
【发布时间】:2013-02-06 07:22:59
【问题描述】:

我是 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);

        }
    });


}

}

【问题讨论】:

标签: javafx-2 javafx


【解决方案1】:

完整的可运行可测试代码可能会有所帮助。还提供您的系统环境详细信息。我已经在下面测试了您的代码(自己试试),它适用于我的 Windows 7 64 位 JavaFX 版本 2.2.0。
(我会在您提供更多详细信息时更新我的​​答案,最后欢迎使用 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);
    }
}

【讨论】:

  • 感谢您的回复,现在我已经编辑了我的问题,这样您就可以看到我做了什么,我按照您说的做了,但它似乎不起作用:(
  • @user1667217。相同的代码对我有用。我的意思是窗口栏仍然不可见。它对你也正确吗?您使用的是哪个版本的 JavafX?通过 System.out.println(com.sun.javafx.runtime.VersionInfo.getRuntimeVersion()); 进行检查;
  • 看起来我的版本是 2.1.0-b21,但我已经知道如何制作了,我只需要更改根目录,感谢您的时间和帮助:D
  • 切换全屏工作,但显示“按 ESC 退出全屏”消息。并且无法禁用此消息:(
【解决方案2】:

我也在制作游戏,我需要全屏功能。我解决它的方法是:

1:使用primaryStage.setFullScreen(true);开启主场景全屏。

2:切换到其他场景时,设置新场景后直接再次申请primaryStage.setFullScreen(true);

我的例子:

    public void start(Stage primaryStage) {

            // Start of program
            setUpGame();

            // MENU
            // Setting up menu stage
            primaryStage.setTitle("My cool game");
            primaryStage.setResizable(false);
            primaryStage.setFullScreen(true);
            primaryStage.setFullScreenExitHint("");

            // Setting up grid pane
            mod.getMenuGrid().setAlignment(Pos.CENTER);
            mod.getMenuGrid().setHgap(10);
            mod.getMenuGrid().setVgap(10);
            mod.getMenuGrid().setPadding(new Insets(25, 25, 25, 25));

            ... More code until I'm changing scene ... 
    }

    private void startGame(Stage primaryStage) {
        setNames();
        createPlayers();
        setUpGameScene();
        primaryStage.setScene(mod.getGameScene());
        primaryStage.setFullScreen(true);
    }

我不知道这是否是最好的解决方法,但至少它很简单并且有效。您只需在更改场景时一致地应用代码行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 2015-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多