JavaFX: GridPane выравнивает метку вправо - PullRequest
0 голосов
/ 05 марта 2019

Я часами пытаюсь получить такой результат: Дизайн , GridDesign , FinalResult

Моя проблема в том, что я не могуправильно выровняйте метку 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));
...