2016-04-05 2 views
2

У меня есть 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; 
    } 
} 

Спасибо заранее.

+0

Вы можете продлить сцену со всеми своими классами, как 'общественного класс SceneA расширяет сцену и создает конструктор, такой как 'public SceneA (родительский корень, ArrayList a, ArrayList b) \t { \t \t супер (корень); \t} ' Тогда: ' goToNextScene.setOnAction (е -> window.setScene (новый SCENEA (новый AnchorPane(), крен, Blist)); ' – DVarga

+0

@DVarga Спасибо за Ваш ответ, это именно то, что я m ищет! :) Работает отлично! Я могу отправить некоторые интернет-точки на ваш путь, если вы опубликуете это как ответ :) Еще раз спасибо – webstudent

ответ

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)); 
Смежные вопросы