Я часами пытаюсь получить такой результат: Дизайн , 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));