JavaFX:GridPane右侧的对齐标签

时间:2019-03-05 00:36:11

标签: java javafx gridpane

几个小时以来,我一直在尝试获得以下结果:DesignGridDesignFinalResult

我的问题是我无法正确对齐TotalPrice标签,当标签尺寸变大(将更多文本添加到标签上)时,我希望它占据2列并对齐到网格的最右边它只能在左侧生长,并且仍与网格的右侧对齐! 但是似乎没有任何正常工作!

就我而言,当我增加价格时,它不会像我想要的那样保持...

这是我使用较小标签文本的结果,在这种情况下,它看起来很完美,价格与右侧完美对齐: result1

但是,当我输入较大的数字时,这是不好的结果,您可以看到TotalPrice标签未按预期对齐: result2

这是我的带有硬编码字符串的代码,仅供测试:

GridPane grid = new GridPane();

//Delete Button
Button btn = new Button("X");
btn.setPrefWidth(40);
btn.setPrefHeight(40);

//Labels
Label productName = new Label("MaxiCheeseBurger Menu");
Label productPrice = new Label("120 den");
Label productQty = new Label("x1");
Label totalPrice = new Label("120 den");

totalPrice.setMaxWidth(Double.MAX_VALUE);
totalPrice.setAlignment(Pos.CENTER_RIGHT);

//Styling labels
productName.setStyle("-fx-font-size: 14;" +
                     "-fx-font-weight: bold;" +
                     "-fx-text-fill: #707070;");
totalPrice.setStyle("-fx-font-size: 14;" +
                    "-fx-font-weight: bold");

//Setting grid column constraints
for (int i = 0; i < 5; i++) {
    ColumnConstraints col = new ColumnConstraints();
    col.setPercentWidth(100.0 / 5);
    col.setHgrow(Priority.ALWAYS);
    col.setFillWidth(true);
    grid.getColumnConstraints().add(col);
}

//Adding nodes to grid
grid.add(btn, 0, 0, 1, 2);
grid.add(productName, 1, 0, 4, 1);
grid.add(productPrice, 1, 1);
grid.add(productQty, 2, 1);
grid.add(totalPrice, 3, 1, 2, 1);

GridPane.setFillWidth(totalPrice, true);
GridPane.setHalignment(totalPrice, HPos.RIGHT);
grid.setGridLinesVisible(true);

grid.setHgap(3);

rows.getChildren().add(grid);
rows.setSpacing(5);
receipt_section.setContent(rows);
receipt_section.setPadding(new Insets(0, 0, 0, 5));

0 个答案:

没有答案