[A]如何在javafx中使用setFullScreen方法?

时间:2014-05-13 13:43:53

标签: javafx

我有一个具有这些属性的舞台

stage = new Stage(StageStyle.DECORATED);
stage.setFullScreen(true);
stage.setFullScreenExitHint("");
stage.setTitle("My App");
stage.getIcons().add(new Image(icon-address));
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("start.fxml"));
fxmlLoader.setController(this);
...
...//and other properties

这个阶段在full screen。我有一个button,每次点击它时,都会调用另一个类的方法,并将该阶段的引用传递给它。

例如,如果我有两个类StartButtonClicked

在开始时,我有这个:

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

     @Override
     public void handle(ActionEvent event) {
          buttonClicked a = new buttonClicked ();
          try {
             a.render(stage);
          } catch (Exception ex) {
             Logger.getLogger(menuController.class.getName())
                                              .log(Level.SEVERE, null , ex);
          }
     }
});

现在,调用render方法,我在render中有以下代码:

FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("buttonclicked.fxml"));
fxmlLoader.setController(this);//set Controller for our fxml file
loader = fxmlLoader.load();//loader is a stackPane because buttonclick.fxml has stackPane
stage.setScene(new Scene(loader));
stage.setFullScreen(true);
...

问题是,如果用户点击按钮,则舞台变为1024x700(因为我在start.fxml和buttonclicked.fxml中有图片。图片的大小为1024x700

过了一会儿,它变成了全屏。我该如何解决这个问题?

我想杀掉全屏延迟

由于

1 个答案:

答案 0 :(得分:1)

尝试

stage.getScene().setRoot(loader);

在渲染方法中。
通过这样做,消除了新场景的创建。因此,我猜想,在场景显示之后必须进行的一些与UI相关的更新和计算也被消除了。