我有一个 Main.java ,其中包含我所有的JavaFX代码,整个程序的多个场景都存储在这里,并且它变得非常难以阅读。< / p>
我想尝试将每个&#34;屏幕&#34;(Scene
)存储在一个单独的.java类中,以便我可以更轻松地找到并进行更改等.I&#39 ;我是JavaFX的新手,还在学习OOP。
在下面的示例中,我想在Scene
点击事件中打开一个新的Button
(来自单独的.java类)。我目前在单班上工作。但是不知道如何在另一个文件中处理这个问题。我还需要将两个数组列表传递到单独的类中以填充表。
以下是我修修补补的样本。
Button
:
goToNextScene = new Button("View next scene");
goToNextScene.setOnAction(e -> window.setScene(AnotherClassA.sceneLayout, aList, bList));
// another try:
goToNextScene.setOnAction(e -> AnotherClassA.sceneLayout(aList, bList));
新类:(只是一个屏幕上有更多按钮,很快就有两个表来显示传递的数组列表)
public class AnotherClassA {
private BorderPane bP;
private HBox hBtnMenu;
private Button hMenuBtnA, hMenuBtnB, returnBtn;
public Scene sceneLayout;
public Scene sceneLayout(ArrayList aList, ArrayList bList) {
// array lists not used yet, but will come
hBtnMenu = new HBox();
hBtnMenu.setSpacing(10);
hBtnMenu.setPadding(new Insets(10,10,10,10));
hMenuBtnA = new Button("Btn A");
//hMenuBtnA.setOnAction(e -> window.setScene(AnotherClassA.sceneA));
hMenuBtnB = new Button("Btn B");
//hMenuBtnB.setOnAction(e -> window.setScene(AnotherClassB.sceneB));
returnBtn = new Button("Return to Home");
//returnBtn.setOnAction(e -> window.setScene(Main.splashScene));
hBtnMenu.getChildren().addAll(hMenuBtnA, hMenuBtnB, returnBtn);
bP = new BorderPane();
bP.setTop(hBtnMenu);
animalSceneLayout = new Scene(bP, 1200, 760);
return asceneLayout;
}
}
提前致谢。
答案 0 :(得分:1)
您可以使用所有类扩展Scene
,执行public class SceneA extends Scene
之类的操作并创建类似
public SceneA(Parent root, ArrayList a, ArrayList b) { super(root); }
然后:
goToNextScene.setOnAction(e -> window.setScene(new SceneA(new AnchorPane(), aList, bList));