Я пытаюсь использовать приложение JavaFX2.0 в отношении образца Ensemble. Как и Ensemble, я также хочу показывать разные страницы, но на основе кликов, сделанных на центральной странице. У меня нет дерева, панели инструментов и т. д. Просто хочу, чтобы набор страниц отображался на основе определенного выбора. Пример: моя главная страница может иметь 6 кнопок, при нажатии кнопки 1 я хочу, чтобы страница 1, страница 2 щелкала кнопку 2 и так далее. На странице 1 у меня снова будет несколько кнопок и кнопка «Возврат», чтобы вернуться на предыдущую страницу. В обычной Java мы могли бы легко добиться этого с помощью CardLayout. Добавить все страницы в карты и показать нужную страницу.
Глядя на проект Enemble, я увидел, что все образцы страниц, такие как AnchorLayout, ColorButton и т. д., расширяют Sample. И в классе Pages есть члены AllPagesPage, SamplesPage, DocPage и т. д., и все они отображаются в TreeView слева.
Я добавил Sample, который расширяет панель, создайте еще один класс DataPane, который расширяет Sample. Третий класс, который имеет ссылку на все панели:
public class AllPagesPage {
HashMap<String, Sample> pages = null;
private static String DATAPANE = "DATAPANE";
public AllPagesPage() {
pages = new HashMap<String, Sample>();
addPages();
}
private void addPages() {
pages.put(DATAPANE, (Sample)new DataPane());
}
public Sample getPage(String page) {
if (pages.containsKey(page))
return (Sample) pages.get(page);
return null;
}
}
Чтобы сохранить ссылку на основе имени, я использовал HashMap. Теперь в моем классе приложений, как мне настроить страницу как DataPane?
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("Hello World");
Group root = new Group();
Scene scene = new Scene(root, 300, 250);
/*
Button btn = new Button();
btn.setLayoutX(100);
btn.setLayoutY(80);
btn.setText("Hello World");
btn.setOnAction(new EventHandler<ActionEvent>() {
public void handle(ActionEvent event) {
System.out.println("Hello World");
}
});
root.getChildren().add(btn);
*
*/
primaryStage.setScene(scene);
primaryStage.show();
}
// Should be called as gotoPage(AllPagesPage.DATAPANE),
// on this command everythign else should be removed and contents of DataPane should come up.
public void goToPage(String page) {
}
DataPane просто содержит код из AnchorPaneSample в конструкторе. Ничего лишнего или никаких других функций - ТОЛЬКО конструктор.
Как мне получить сцену и установить страницы при вызове метода gotoPage(String page)???