所以我试图简单地在 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 系统的一个怪癖,当它无法计算出场景的任何首选大小时,它似乎为初始场景设置了一些默认大小(只是这样初始窗口出现)。
如何解决
要修复此问题,请将一些内容放入封闭的场景中(和/或在场景构造函数中设置初始场景大小)。
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/