我似乎无法在javafx中更改场景
所以我试图在javafx中的两个场景之间进行简单的切换,但我遇到了这个重复出现的问题,似乎无法解决。以下代码对此进行了演示:我似乎无法在javafx中更改场景,java,javafx-8,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 exte
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);
}
}