0

いくつかのボタンがあるツールバーがあります。このボタンのいくつかが異なる 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ファイルをロードできるアクションリスナーである「コンテンツ」をロードできることです。ツールバー ボタンにこの機能が必要です。

すべてのヘルプは大歓迎です! ありがとう :)

4

1 に答える 1

0

私のプロジェクトには他のパッケージにいくつかのエラーがあるため、まだ確認できません。しかし、これがうまくいくと私が信じているコードです:

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);
    }
于 2012-04-28T09:52:47.957 に答える