如何使布局的内容可调整大小?

时间:2015-04-27 10:18:24

标签: java layout javafx scenebuilder

我在场景构建器中创建了这个:

Terminal

Terminal Hierarchy

我的目标是让它变得更美丽:

  • 问题1 :将关闭按钮放在 MAX RIGHT

  • 问题2 坚持将不同的布局和TextArea粘贴到窗口边框,因为当我调整窗口大小时,组件不会移动。

为此,我想操纵布局属性,但我真的不知道如何操作。 我正在考虑使用间距来解决我的问题,但它似乎很复杂,我不知道解决我的第二个问题。

我的布局选择是否正确?我必须使用哪些属性来解决我的问题?

感谢。

1 个答案:

答案 0 :(得分:1)

使用StackPane进行顶级布局的IMO更合适:

@Override
public void start( Stage stage )
{
    Button b = new Button( "Close" );
    Label l = new Label( "Console" );

    StackPane sp = new StackPane( l, b );
    StackPane.setAlignment( l, Pos.CENTER_LEFT );
    StackPane.setAlignment( b, Pos.CENTER_RIGHT );

    TextArea area = new TextArea();
    VBox.setVgrow( area, Priority.ALWAYS );
    VBox box = new VBox( sp, area );

    Scene scene = new Scene( box, 800, 600 );

    stage.setScene( scene );
    stage.show();
}

但使用HBox是不可避免的,请将另一个元素添加为间隔符:

@Override
public void start( Stage stage )
{
    Button b = new Button( "Close" );
    Label l = new Label( "Console" );
    Pane spacer = new Pane();

    HBox hBox = new HBox(l, spacer, b);
    HBox.setHgrow( spacer, Priority.ALWAYS);

    TextArea area = new TextArea();
    VBox.setVgrow( area, Priority.ALWAYS );
    VBox box = new VBox( hBox, area );

    Scene scene = new Scene( box, 800, 600 );

    stage.setScene( scene );
    stage.show();
}