Как изменить панель в зависимости от выбора?

176
20 ноября 2018, 08:50

мне нужно сделать что-то типа TreeView, суть в том, что-бы когда пользователь выбирает некий класс менялась основная панель, реализовать всё нужно на JavaFX, буду благодарен за любую помощь.

Answer 1
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TreeItem;
import javafx.scene.control.TreeView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.Pane;
import javafx.stage.Stage;
import java.util.function.Supplier;
public class Main extends Application {
    public void start(Stage primaryStage) throws Exception {
        final BorderPane rootScene = new BorderPane();
        TreeItem<NamePaneFactory> root = new TreeItem<>(new NamePaneFactory("Root", () -> null));
        root.getChildren().addAll(
                new TreeItem<>(new NamePaneFactory("Pane1", Pane1::new)),
                new TreeItem<>(new NamePaneFactory("Pane2", Pane2::new))
        );
        TreeView<NamePaneFactory> treeView = new TreeView<>(root);
        treeView.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
            rootScene.setCenter(newValue == null ? null : newValue.getValue().factory.get());
        });
        rootScene.setLeft(treeView);
        primaryStage.setScene(new Scene(rootScene));
        primaryStage.show();
    }
    static class NamePaneFactory {
        final String name;
        final Supplier<? extends Pane> factory;
        public NamePaneFactory(String name, Supplier<? extends Pane> factory) {
            this.name = name;
            this.factory = factory;
        }
        @Override
        public String toString() {
            return name;
        }
    }
    static class Pane1 extends BorderPane {
        public Pane1() {
            super(new Label("Pane1"));
        }
    }
    static class Pane2 extends FlowPane {
        public Pane2() {
            super(new Label("Pane2"));
        }
    }
}
READ ALSO
Сохранение видеопотока

Сохранение видеопотока

Есть задача - реализовать 2 сервиса, один отдает видеопоток, другой принимает его и записывает на дискВопрос в том, как осуществить соединение...

203
Как изменить цвет JButton во время нажатия

Как изменить цвет JButton во время нажатия

Есть какие-то методы позволяющие изменить цвет JButton во время нажатия? Если же нет, то как это возможно сделать? Пытался найти, но ничего достаточно...

186
Сворачивание видео в угол экрана, как в youtube

Сворачивание видео в угол экрана, как в youtube

Есть ли библиотека, реализующая интерфейс сворачивания видео, как в youtube (когда оно становиться маленьким прямоугольником в нижнем правом...

341
Как вручную установить библиотеку Apache POI [закрыт]

Как вручную установить библиотеку Apache POI [закрыт]

Такой вопрос - какие файлы и куда скачанной библиотеки Apache POI на Java надо ставить, что бы можно было работать не используя среды разработки,...

198