首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GridPane不跨越整个VBox

GridPane不跨越整个VBox
EN

Stack Overflow用户
提问于 2015-07-27 07:48:15
回答 1查看 608关注 0票数 1

我正试图创建一张发票,我以后可以打印。我用VBoxes和GridPanes来做这件事。中间GridPane中的列数是可变的。我在用循环来建造它。为了使GridPane (绿色边框)跨越整个VBox (红色边框),我尝试了许多不同的方法,但似乎没有什么效果。

在给出边界之后,我意识到网格实际上跨越了整个VBoxes,但是列并没有占据整个空间。我不能给列约束,因为我不知道中间网格的列数,我必须保持在500 to以下。

下面是相关代码。

代码语言:javascript
复制
final int width = 500;
BorderPane borderpane = new BorderPane();

VBox vboxTop = vboxForPrinting('l');
VBox vboxMiddle = vboxForPrinting('r');
VBox vboxBottom = vboxForPrinting('r');
GridPane gridpaneTop = new GridPane();
GridPane gridpaneMiddle = new GridPane();
GridPane gridpaneBottom = new GridPane();

borderpane.setPrefWidth(width);
vboxTop.setFillWidth(true);
vboxMiddle.setFillWidth(true);
vboxBottom.setFillWidth(true);

// Some code

vboxTop.getChildren().add(gridpaneTop);
vboxMiddle.getChildren().add(gridpaneMiddle);
vboxBottom.getChildren().add(gridpaneBottom);

borderpane.setTop(vboxTop);
borderpane.setCenter(vboxMiddle);
borderpane.setBottom(vboxBottom);

函数vboxForPrinting()如下所示:

代码语言:javascript
复制
public VBox vboxForPrinting(char align) {
    VBox vbox = new VBox();
    switch (align) {
        case 'r':
        case 'R':
            vbox.setAlignment(Pos.CENTER_RIGHT);
            break;
        case 'l':
        case 'L':
            vbox.setAlignment(Pos.CENTER_LEFT);
            break;
        default:
            vbox.setAlignment(Pos.CENTER);
    }
    vbox.setPadding(new Insets(5));
    vbox.setSpacing(5);
    vbox.setFillWidth(true);
    return vbox;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-27 09:05:47

您可以为网格窗格的特定子窗格应用setHgrow(),该子窗格将使实习生增长并占用剩余的可用空间。

来自javadocs:

设置由网格窗格包含的子区域的水平增长优先级。如果设置了,网格窗格将使用优先级分配额外的水平空间,如果网格窗格的大小大于其首选宽度。将值设置为null将删除约束。

代码语言:javascript
复制
GridPane.setHgrow(name, Priority.ALWAYS);

其中,name是一个标签,您想要生长和占据其余的空地方。

如果希望所有字段或列都增长,则可以将其应用于所有字段或列,也可以创建一个ColumnConstraints并将其应用于一个/多个列。

下列守则应能发挥作用:

代码语言:javascript
复制
ColumnConstraints columnConstraints = new ColumnConstraints();
columnConstraints.setFillWidth(true);
columnConstraints.setHgrow(Priority.ALWAYS);
gridPane.getColumnConstraints().add(columnConstraints);

来关心你,

我不能给列约束,因为我不知道中间网格的列数,我必须保持在500 to以下。

您不需要跟踪列的数量,只有当有额外的可用空间时,hgrow才允许子程序增长。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31647593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档