Javafx 2 在全屏JavaFX中更改场景
我是JavaFX新手。我有我的主要和次要场景;当我从第一个场景切换到第二个场景时,窗口的栏变为可见。我怎样才能解决这个问题 这是我的密码Javafx 2 在全屏JavaFX中更改场景,javafx-2,javafx,Javafx 2,Javafx,我是JavaFX新手。我有我的主要和次要场景;当我从第一个场景切换到第二个场景时,窗口的栏变为可见。我怎样才能解决这个问题 这是我的密码 public class ProyectoTeoriaBD1 extends Application { Stage primaryStage; public static void main(String[] args) { launch(args); } @Override public void start(final Stage prim
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);
}
});
}
public类ProyectoTeoriaBD1扩展应用程序{
初级阶段;
公共静态void main(字符串[]args){
发射(args);
}
@凌驾
公共作废开始(最终阶段初级阶段){
this.primaryStage=primaryStage;
GridPane gp=新的GridPane();
setHgap总经理(10);
设置间隙总成(10);
总成设置填充(新插图(25,25,25,25));
场景firstScene=新场景(gp);
按钮b=新按钮(“更改场景”);
加总成(b,1,1);
初级阶段。设置场景(第一场景);
primaryStage.setFullScreen(真);
primaryStage.show();
b、 setOnAction(新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
GridPane gp=新的GridPane();
场景第二场景=新场景(gp);
Text txtSecond=新文本(“第二场景”);
加总成(txtSecond,1,1);
第一阶段。第二场景;
primaryStage.setFullScreen(假);
primaryStage.setFullScreen(真);
}
});
}
}完整的可运行可测试代码可能会有所帮助。还提供您的系统环境详细信息。我已经在下面测试了你的代码(你自己试试),它在我的Windows7 64位JavaFX2.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);
}
}
导入javafx.application.application;
导入javafx.event.ActionEvent;
导入javafx.event.EventHandler;
导入javafx.scene.scene;
导入javafx.scene.control.Button;
导入javafx.scene.layout.StackPane;
导入javafx.scene.layout.VBoxBuilder;
导入javafx.scene.text.text;
导入javafx.stage.stage;
公共类测试扩展了应用程序{
私人阶段初级阶段;
@凌驾
公共无效开始(阶段primaryStage){
this.primaryStage=primaryStage;
this.primaryStage.setFullScreen(true);
按钮btn=新按钮(“登录”);
btn.setOnAction(loginClienteHandler());
StackPane root=新的StackPane();
root.getChildren().add(btn);
场景=新场景(根,300,250);
setTitle(“JavaFX版本:+com.sun.JavaFX.runtime.VersionInfo.getRuntimeVersion());
初级阶段。场景(场景);
primaryStage.show();
}
public EventHandler loginClienteHandler(){
EventHandler evh=新的EventHandler(){
@凌驾
公共无效句柄(ActionEvent事件){
primaryStage.setScene(新场景(VBoxBuilder.create().children)(新文本(“文本”)).build());
primaryStage.sizeToScene();
primaryStage.setFullScreen(假);
primaryStage.setFullScreen(真);
}
};
返回evh;
}
公共静态void main(字符串[]args){
发射(args);
}
}
我也在制作游戏,我需要全屏功能。我解决问题的方法是:
1:使用primaryStage.setFullScreen(真)代码>以启用主场景的全屏显示
2:切换到其他场景时,应用primaryStage.setFullScreen(真)直接在设置新场景后再次执行代码>操作
我的例子是:
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);
}
我不知道这是否是最好的解决方法,但至少它很简单而且有效。你只需要在更改场景时始终如一地应用代码行。谢谢你的回答,现在我编辑了我的问题,这样你就可以看到我做了什么,我做了你说的,但似乎不起作用:(@user1667217。同样的代码对我有效。我的意思是windows栏仍然不可见。它对你也正确吗?你使用的是哪个版本的JavafX?请按System.out.println(com.sun.JavafX.runtime.VersionInfo.getRuntimeVersion()检查它);看起来我的版本是2.1.0-b21,但我已经找到了制作它的方法,我只需更改根目录感谢您的时间和帮助:DToggle fullscreen可以工作,但显示了“按ESC退出全屏”消息。并且此消息无法禁用:(可能重复)