这可能以前曾被问过,但我找不到答案。我正在开发一个JavaFX应用程序,其中包含许多场景和许多动画。目前,我在start()函数内部以及扩展Application的主类中定义了不同的Animationtimer和不同的Scene。但是,代码变得非常混乱且冗长。
有没有一种方法可以在单独的Java类中定义所有这些内容,然后简单地执行类似primaryStage.setScene(MyScene.getScene)
的操作-MyScene是具有所有场景代码的Java类。
类似这样的东西:
public class TestScene {
private Group root = new Group();
Scene test = new Scene(root);
Button button = new Button("test");
root.getChildren.add(button);
}
实际上是将代码作为一个场景,您可以将其导入并设置在primaryStage上。
编辑:我不知道为什么这对我来说如此困难,正如Bertijn所说,我显然只需要使用构造器即可。无论出于什么原因,我都忘记了这一点,因此显然可以在某种函数之外执行root.getChildren.add(button)。
如果有人为此感到困扰,这是超级简单的解决方案:
包含我们场景的类:
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.paint.Color;
public class OurScene {
public Scene getScene() {
Group root = new Group();
Scene scene = new Scene(root, Color.GREEN);
Button button = new Button("Hello world!");
root.getChildren().add(button);
return scene;
}
}
然后将其添加到primaryStage:
import javafx.application.Application;
import javafx.stage.Stage;
public class Main extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
OurScene ourScene = new OurScene();
primaryStage.setScene(ourScene.getScene());
primaryStage.show();
}
}
答案 0 :(得分:0)
尝试创建一个名为Scenes
的类。在构造函数中,创建所有场景,如果需要,可以给它们提供一个ID。在您的主类中,只需创建此类Scenes scenes = new Scenes();
的实例。场景被创建。然后,您可以通过创建getScene(String id)
方法来访问它们。
希望我能正确理解您的问题,如果仍然无法解决问题,请随时与我联系!