Совместное использование панели между различными сценами javafx - PullRequest
0 голосов
/ 17 марта 2019

Я пытаюсь реализовать ряд кнопок меню, которые будут переключаться между различными сценами, однако я пытаюсь оптимизировать его таким образом, чтобы я мог повторно использовать свою панель меню (где находятся все кнопки меню) для всех сцен, которые будет отображать это.

Вот код:

public class Main extends Application {

    Stage window;
    Scene scene1, scene2;

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage primaryStage) throws Exception {
    window = primaryStage;
    window.setTitle("Arty's Drone Delivery Server");

    //MainMenu pane
    final VBox vpane = new VBox(10);
    final Button postB = new Button("Postcodes");
    final Button dronesB = new Button("Drones");
    final Button staffB = new Button("Staff");
    vpane.getChildren().addAll(postB, dronesB, staffB);

    //Drones Box
    DronesBox dronesPane = new DronesBox();
    //Poscodes Box
    PostCodeBox postCodesPane = new PostCodeBox();

    //Layout 2
    BorderPane border2 = new BorderPane();
    border2.setPadding(new Insets(20, 20, 20, 20));
    border2.setLeft(vpane);
    border2.setCenter(dronesPane);
    scene2 = new Scene(border2, 600, 400);

    //Layout 1
    BorderPane border1 = new BorderPane();
    border1.setPadding(new Insets(20, 20, 20, 20));
    border1.setLeft(vpane);
    border1.setCenter(postCodesPane);
    scene1 = new Scene(border1, 600, 400);

    //button event listeners
    postB.setOnAction(e -> window.setScene(scene1));
    dronesB.setOnAction(e -> window.setScene(scene2));

    window.setScene(scene1);
    window.show();
    }


}

class PostCodeBox extends VBox{
    PostCodeBox(){
        Label title = new Label("Postcodes:");
        TextField textbox = new TextField();
        textbox.setPrefSize(200, 350);
        textbox.setEditable(false);
        textbox.appendText("SO16 3UH \n");
        textbox.appendText("SO14 3WL \n");

        HBox actionPane = new HBox(3);
        Button add = new Button("Add");
        Button remove = new Button("Remove");
        Button edit = new Button("Edit");
        actionPane.getChildren().addAll(add, remove, edit);

        this.getChildren().addAll(textbox, actionPane);

    }
}

DronesBox выполняется по тому же принципу, что и PostCodeBox.

Теперь, насколько я понимаю, при нажатии кнопки «Дроны» происходит переход к следующей сцене, но возникают проблемы при переносе через vpane, который технически был добавлен к обоим. Мне кажется, что я каким-то образом должен сделать его «главной панелью», которая будет отображаться во всех вариантах нажатия кнопок.

Scene 1

Scene 2

Другой способ, которым я мог бы попытаться это сделать, - это удалить объект из пограничной панели и добавить новый, но тогда я вообще не переключаю сцены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...