Кнопка панели инструментов JavaFX 2.0 загрузить fxml

У меня есть панель инструментов с несколькими кнопками. Я хочу, чтобы несколько из этих кнопок загружали разные FXML-файлы. Сейчас это делается путем перезаписи файла fxml в коде Java и вставки его при каждом вызове. Было бы намного лучше, если бы я мог просто вызвать файл FXML и получить правильную сцену. Это пример, в котором я загружаю представление настроек:

public void showModelSettings(){
    clearPane();
    GridPane gridPane = new GridPane();
    ColumnConstraints cc1 = new ColumnConstraints();
    cc1.setPercentWidth(50);
    ColumnConstraints cc2 = new ColumnConstraints();
    cc2.setPercentWidth(50);
    gridPane.getColumnConstraints().addAll(cc1,cc2);

    RowConstraints rc1 = new RowConstraints();
    rc1.setPercentHeight(30);
    RowConstraints rc2 = new RowConstraints();
    rc2.setPercentHeight(70);
    gridPane.getRowConstraints().addAll(rc1,rc2);

    //iwModel.setImage(new Image("C:\Users\Public\Pictures\Sample Pictures\Desert.jpg"));

    gridPane.setConstraints(cbModel, 0, 0);
    gridPane.setConstraints(btnImageChooser, 1, 0);

    gridPane.setConstraints(iwModel, 0, 1, 2, 1);


    gridPane.getChildren().addAll(cbModel, btnImageChooser,iwModel);
    mainPanel.getChildren().add(gridPane);

}

Раньше я использовал панель вкладок, удобная вещь в том, что она может загружать «контент», который в некотором смысле является слушателем действий, который может загружать файлы fxml. Мне нужна эта функциональность для кнопок моей панели инструментов.

вся помощь будет принята с благодарностью! Спасибо :)


person haakonlu    schedule 27.04.2012    source источник


Ответы (1)


Думаю, возможно, я решил это, пока не могу проверить, потому что в моем проекте есть несколько ошибок в других пакетах. Но вот код, который, как мне кажется, будет работать:

private Parent replaceSceneContent(String fxml) throws Exception {
        Parent page = (Parent) FXMLLoader.load(InventorySystem.class.getResource("/hist/inventory/gui/fxml/"+fxml), ResourceBundle.getBundle("MessageBundle",localSettings.getLocale()), new JavaFXBuilderFactory());
        Scene scene = stage.getScene();
        if(scene == null) {
            scene = new Scene(page, 340, 280);
            scene.getStylesheets().add("hist/inventory/gui/startStyle.css");    //Endre styles?
            //stage.setResizable(false);    //Må kanskje flyttes
            stage.setScene(scene);
            Organizer.getWindowFitter().setScene(scene);
        } else {
            stage.getScene().setRoot(page);
        }
        stage.sizeToScene();
        return page;
    }

    public void setScene(String scene) throws Exception {
        replaceSceneContent(scene);
    }
person haakonlu    schedule 28.04.2012