java - 我似乎无法更改 javafx 中的场景

标签 java javafx-8

所以我试图简单地在 javafx 中的两个场景之间进行更改,但我遇到了这个重复出现的问题,我似乎无法解决。其演示如下代码:

import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.paint.Color;

public class TestApplication extends Application
{
   private Stage stage;
   private Scene scene, scene2;
   public void start(Stage s)
   {
      scene=new Scene(new Group());
      scene2=new Scene(new Group());

      scene.setFill(Color.GREEN);
      scene2.setFill(Color.ORANGE);

      scene.setOnMouseClicked(e-> changeScene(scene2));
      scene2.setOnMouseClicked(e-> changeScene(scene)); 

      stage=s;
      s.setScene(scene);
      s.show();
   }
   public void changeScene(Scene nex)
   {
      stage.setScene(nex);
      System.out.println("here");
   }

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

我做错了什么吗?我该如何解决这个问题?

最佳答案

出了什么问题

您没有在场景中放置任何东西(只是一个空组)。默认情况下,场景(通常)将调整为其所包含内容的首选大小。由于您的场景没有任何大小的内容,因此场景实际上不应该有任何大小。我认为第一个场景甚至出现的事实是 JavaFX 系统的一个怪癖,当它无法计算出场景的任何首选大小时,它似乎为初始场景设置了一些默认大小(只是这样初始窗口出现)。

如何解决

要修复此问题,请将一些内容放入封闭的场景中(和/或在场景构造函数中设置初始场景大小)。

scene 1 scene 2

import javafx.application.Application;
import javafx.scene.control.Label;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.Group;
import javafx.scene.paint.Color;

public class TestApplication extends Application {
    private Stage stage;
    private Scene scene, scene2;

    public void start(Stage s) {
        scene = new Scene(new Group(new Label("1")), 200, 150);
        scene2 = new Scene(new Group(new Label("2")), 200, 150);

        scene.setFill(Color.GREEN);
        scene2.setFill(Color.ORANGE);

        scene.setOnMouseClicked(e -> changeScene(scene2));
        scene2.setOnMouseClicked(e -> changeScene(scene));

        stage = s;
        s.setScene(scene);
        s.show();
    }

    private void changeScene(Scene nex) {
        stage.setScene(nex);
    }

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

关于java - 我似乎无法更改 javafx 中的场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37491237/

相关文章:

java - 如何在 Spring 4 中从 Bean 定义创建对象?

c# - 将 protobuf 序列化对象从 C# 发送到 java 服务器不起作用?

java - fxml 文件无法在 SceneBuilder 2 上打开

javafx - 如何使用 Set 作为 TableView 的基础

java - 如何修改调用更改监听器的 javafx 对象属性的对象?

java - Antlr Grammar 无法给出所需的 AST

java - 如何从远程服务器的 Shell 脚本运行 java -jar 命令?

java - JavaFX 中的 TableView 数据编码

java - 涉及 JavaFX 和泛型的误导性堆栈跟踪

java - 当您关闭并再次打开应用程序时,如何使用RadioButton进行黑暗模式操作以及如何保持主题状态