如何使布局的内容可调整大小?
How to make layout's content resizable?
我在 scene builder 中创建了这个:
我的目标是让这个更漂亮一点:
问题1:把关闭按钮放在MAX RIGHT
问题 2:将不同的布局和 TextArea 粘贴到 window 边框,因为当我调整了 window 的大小,组件没有移动。
为此,我想操纵布局属性,但我真的不知道该怎么做。
我正在考虑 使用 spacing 来解决我的第一个问题,但它看起来很复杂,而且我不知道如何解决我的第二个问题。
我的布局选择正确吗?我必须使用哪些属性来解决我的问题?
谢谢。
IMO 使用 StackPane
作为顶部布局更合适:
@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();
}
我在 scene builder 中创建了这个:
我的目标是让这个更漂亮一点:
问题1:把关闭按钮放在MAX RIGHT
问题 2:将不同的布局和 TextArea 粘贴到 window 边框,因为当我调整了 window 的大小,组件没有移动。
为此,我想操纵布局属性,但我真的不知道该怎么做。 我正在考虑 使用 spacing 来解决我的第一个问题,但它看起来很复杂,而且我不知道如何解决我的第二个问题。
我的布局选择正确吗?我必须使用哪些属性来解决我的问题?
谢谢。
IMO 使用 StackPane
作为顶部布局更合适:
@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();
}