Я бы предположил, что GridPane вычисляет ширину по умолчанию каждого столбца в соответствии с максимальной предпочтительной шириной всех элементов в этом столбце. Тем не менее, в моем коде, кажется, вычисляется слишком маленькая ширина, в результате одна из моих меток в столбце обрезается.JavaFX: GridPane вычисляет неправильную ширину столбца
Вот мой «cashflowform.fxml»:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.shape.Box?>
<GridPane xmlns:fx="http://javafx.com/fxml" fx:controller="finfx.ui.CashFlowForm"
style="-fx-padding:25;"
vgap="5" hgap="5">
<Label text="Datum"
GridPane.columnIndex="0" GridPane.rowIndex="0">
</Label>
<DatePicker fx:id="datePicker" GridPane.columnIndex="1" GridPane.rowIndex="0"/>
<Label text="Betrag"
GridPane.columnIndex="0" GridPane.rowIndex="1">
</Label>
<TextField GridPane.columnIndex="1" GridPane.rowIndex="1"/>
<Label text="Kategorie"
GridPane.columnIndex="0" GridPane.rowIndex="2">
</Label>
<TextField GridPane.columnIndex="1" GridPane.rowIndex="2"/>
<Label text="Anmerkung"
GridPane.columnIndex="0" GridPane.rowIndex="3">
</Label>
<TextField GridPane.columnIndex="1" GridPane.rowIndex="3"/>
<Box GridPane.columnIndex="0" GridPane.rowIndex="4"
GridPane.columnSpan="2"
GridPane.hgrow="ALWAYS"
height="20">
</Box>
<Button text="Speichern"
GridPane.columnIndex="0" GridPane.rowIndex="5"
GridPane.columnSpan="2"
GridPane.hgrow="ALWAYS" maxWidth="Infinity">
</Button>
<Button text="Speichern & Weitere Position..."
GridPane.columnIndex="0" GridPane.rowIndex="6"
GridPane.columnSpan="2"
GridPane.hgrow="ALWAYS" maxWidth="Infinity">
</Button>
<Button text="Abbrechen"
GridPane.columnIndex="0" GridPane.rowIndex="7"
GridPane.columnSpan="2"
GridPane.hgrow="ALWAYS" maxWidth="Infinity">
</Button>
</GridPane>
И это, как я настраивал сцену (обратите внимание, я не устанавливать любой размер, так что я позволил это вычислить сам размер):
primaryStage.setScene(new Scene(FXMLLoader.loadFxmlRoot("cashflowform")));
primaryStage.show();
Результат:
Как вы можете видеть первое сотрудничество lumn слишком мала, чтобы полностью показать мой ярлык «Anmerkung». Почему это, и как лучше всего это исправить?
PS: В качестве побочного вопроса, если кто-то заботится, я также отметил, что мой «ящик», который я добавил как заполняющий пробел между моими ярлыками/полями и кнопками, фактически отображается как маленькая белая вертикальная линия, когда вы посмотрите внимательно. Кажется, что Box не подходит для этого. Я только начинаю с JavaFX, что будет подходящим партнером Swing's «Box.createVerticalGlue()»?
PPS: Прежде чем кто спрашивает его: «FXMLLoader» видели в моем коде является не javafx.fxml.FXMLLoader, а пользовательские утилиты класса
Спасибо!