У меня есть Main.java, который содержит весь мой код JavaFX, здесь хранятся несколько сцен всей программы, и читать их стало очень трудно.JavaFX - Открыть сцену из другого события класса
Я хотел бы попытаться сохранить каждый «экран» (Scene
) в отдельном классе .java, чтобы я мог легче находить и вносить изменения и т. Д. Я новичок в JavaFX и все еще изучаю ООП.
В приведенном ниже примере я хотел бы открыть новый Scene
(из отдельного класса .java) по событию клика Button
. У меня сейчас это работает в одном классе. Но не знаю, как подойти к этому в другом файле. Мне также нужно передать два списка массивов в отдельный класс для заполнения таблиц.
Ниже приведен образец моего мастерства.
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;
}
}
Спасибо заранее.
Вы можете продлить сцену со всеми своими классами, как 'общественного класс SceneA расширяет сцену и создает конструктор, такой как 'public SceneA (родительский корень, ArrayList a, ArrayList b) \t { \t \t супер (корень); \t} ' Тогда: ' goToNextScene.setOnAction (е -> window.setScene (новый SCENEA (новый AnchorPane(), крен, Blist)); ' – DVarga
@DVarga Спасибо за Ваш ответ, это именно то, что я m ищет! :) Работает отлично! Я могу отправить некоторые интернет-точки на ваш путь, если вы опубликуете это как ответ :) Еще раз спасибо – webstudent