Интеграция Gluon Scene Builder FXML в мой код Java [дубликат]

Это задокументировано. http://www.boost.org/doc/libs/1_49_0/libs/serialization/doc/todo.html#portablebinaryarchives

В Boost нет портативного архива.

Вы хотите посмотреть EOS Portable Archives: https://epa.codeplex.com/

Их очень легко удалить в коде базы и использования вместо boost::archive::binary_[io]archive

12
задан Hussein Saied 20 November 2015 в 01:51
поделиться

3 ответа

Я, наконец, нашел, что это работает после попытки!

@FXML Pane secPane;
public void loadFxml (ActionEvent event)  {
  Pane newLoadedPane =  FXMLLoader.load(getClass().getResource("/application/fxml2.fxml"));
  secPane.getChildren().add(newLoadedPane);
}
9
ответ дан YCF_L 17 August 2018 в 14:44
поделиться

Простое изменение поля в классе контроллера не изменит график сцены.

secPane - это просто ссылка на узел в графе сцены.

Если secPane является просто заполнителем, вы можете заменить его в дочернем списке родителя:

public void loadFxml (ActionEvent event) {
    // load new pane
    Pane newPane = FXMLLoader.load(getClass().getResource("/application/Login2.fxml"));

    // get children of parent of secPane (the VBox)
    List<Node> parentChildren = ((Pane)secPane.getParent()).getChildren();

    // replace the child that contained the old secPane
    parentChildren.set(parentChildren.indexOf(secPane), newPane);

    // store the new pane in the secPane field to allow replacing it the same way later
    secPane = newPane;
}

Это предполагает, конечно, что getClass().getResource("/application/Login2.fxml") дает правильный ресурс и не возвращает null (что происходит если ресурс с указанным именем недоступен)

3
ответ дан fabian 17 August 2018 в 14:44
поделиться

Вы можете реализовать что-то вроде этого:

 public void start(Stage primaryStage) throws IOException {
            primaryStage.setTitle("Title");
            primaryStage.setScene(createScene(loadMainPane("path_of_your_fxml")));
            primaryStage.show();

    }

    private Pane loadMainPane(String path) throws IOException {
        FXMLLoader loader = new FXMLLoader();

        Pane mainPane = (Pane) loader.load(
                getClass().getResourceAsStream(path));

        return mainPane;
    }


    private Scene createScene(Pane mainPane) {
        Scene scene = new Scene(mainPane);
      return scene;
    }

Затем вы можете создать отдельный вызов класса для навигации, чтобы сохранить все ваши пути fxml:

public class Navigator {

private final String P1;
private final String P2;
//then you can implement getters...
public String getP1() {
    return P1;
}

public String getP2() {
    return p2;
}

private static FxmlController Controller;

    public static void loadPane(String fxml) {
    try {
        FxmlController.setPane(
                (Node) FXMLLoader.load(Navigator.class.getResource(fxml)));
    } catch (IOException e) {
        e.printStackTrace();
    }
}

public Navigator() throws IOException {
    this.P1 = "p1.fxml";
    this.P2 = "p2.fxml";}

Затем вы можете загрузить вашей панели в вашей кнопке, как показано ниже:

@FXML
    private void btnAction(ActionEvent event) throws IOException {
    Navigator.load(new Navigator().getP1());
    ..

.

0
ответ дан Madushan Perera 17 August 2018 в 14:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: