10

まず第一に、私は長年 Java/Swing 開発者です。最近、遊んでみるために JavaFX 2.2 をインストールしました。

メインウィンドウの上部にツールバーがあり、ウィンドウの残りの部分にコンテンツがある、かなり単純なアプリを作成しています。これを達成する明白な方法は、 を使用し、上部セクションにBorderPanea を貼り付けることです。ToolBarここまでは順調ですね。ただし、ツールバーのコントロールの一部をウィンドウの左端に配置し、一部を右端に配置したいと考えています。これを行う方法が見つかりません。非表示のスペーサー オブジェクトをツールバーに配置することはできますが、固定幅にする方法しか知りません。ウィンドウのサイズが変更されても、サイズは変更されません。

そこで、ToolBar オブジェクトを使用する代わりに、単にHBox;を使用すると考えました。Box水平方向の Swingオブジェクトと同等のはずですよね? また、SwingBoxクラスにはcreateHorizontalGlue()、自動サイズ調整スペーサーを挿入するメソッドがあります。ええと、JavaFX HBox クラスで同等のものを見つけることができません。これを行う簡単な方法はありませんか?

4

2 に答える 2

12

コントロールを保持するためHBoxに a の代わりにan を使用してそれを行う方法を見つけました。ToolBar重要なのはHBox.setHgrow()メソッドです。これにより、使用可能なスペースを埋めるためにスペーサー オブジェクトを大きくするように設定できます。実際の ToolBar インスタンスでこれを行うことが可能かどうかはまだわかりません。

/**
 * Creates and populates the Node that serves as the window toolbar.
 *
 * @return a newly constructed and populated toolbar component
 */
private Node makeToolbar() {
    // Auto-sizing spacer
    Region spacer = new Region();
    HBox.setHgrow(spacer, Priority.ALWAYS);

    // Horizontal box containing toolbar controls
    HBox box = new HBox();
    box.setPadding(new Insets(8));
    box.setAlignment(Pos.CENTER);
    box.getChildren().addAll(openButton, spacer, resizeSlider);

    // Colored background panel with drop shadow
    Pane bgRect = new Pane();
    bgRect.setStyle("-fx-background-color: #e0e0e0;");
    bgRect.setEffect(DropShadowBuilder.create().width(1).build());

    // StackPane to hold box and rectangle
    StackPane stack = new StackPane();
    stack.getChildren().addAll(bgRect, box);

    return stack;
}
于 2012-08-25T04:11:26.063 に答える