Я пытаюсь реализовать ряд кнопок меню, которые будут переключаться между различными сценами, однако я пытаюсь оптимизировать его таким образом, чтобы я мог повторно использовать свою панель меню (где находятся все кнопки меню) для всех сцен, которые будет отображать это.
Вот код:
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, который технически был добавлен к обоим. Мне кажется, что я каким-то образом должен сделать его «главной панелью», которая будет отображаться во всех вариантах нажатия кнопок.
Другой способ, которым я мог бы попытаться это сделать, - это удалить объект из пограничной панели и добавить новый, но тогда я вообще не переключаю сцены.