Как исправить изменение ширины столбца в GridPane при выборе значения в ComboBox в JavaFX?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как исправить изменение ширины столбца в GridPane при выборе значения в ComboBox в JavaFX?

Сообщение Anonymous »

У меня есть форма с четырьмя столбцами: метка, контроль, метка, контроль. Ширина этикетки неизвестна. Мне нужно, чтобы метки всегда отображались полностью, то есть их не следует обрезать, поэтому должна меняться только ширина элементов управления. Если возможно, я хочу, чтобы первый и третий столбцы (с элементами управления) имели одинаковую ширину. Таким образом, ширина столбца 1 должна равняться ширине столбца 3.
Если я использую только текстовые поля, проблем не возникает. Но когда я добавил растягивающийся список со списком и в этом поле со списком выбрано значение, тогда столбец1Width != столбец3Width.
Это мой код:

Код: Выделить всё

public class NewMain extends Application {

enum Test { FOO, BAR }

@Override
public void start(Stage stage) {
GridPane gridPane = new GridPane();
gridPane.setHgap(10);
gridPane.setVgap(10);
gridPane.setPadding(new Insets(10));

textFieldRow(gridPane, 0);
textFieldRow(gridPane, 1);

Label label1 = new Label("Label AAAAA BBBBB:");
label1.setMinWidth(Region.USE_PREF_SIZE);
var comboBox = new ComboBox();
comboBox.setItems(FXCollections.observableArrayList(Test.values()));

gridPane.add(label1, 0, 2);
gridPane.add(comboBox, 1, 2);
comboBox.setMaxWidth(Double.MAX_VALUE);

Scene scene = new Scene(gridPane, 600, 200);
stage.setScene(scene);
stage.show();
}

private void textFieldRow(GridPane gridPane, int index) {
Label label1 = new Label("Label AAAAA BBBBB:");
label1.setMinWidth(Region.USE_PREF_SIZE);
TextField textField1 = new TextField();
GridPane.setHgrow(textField1, Priority.ALWAYS);
textField1.setMinWidth(10);
Label label2 = new Label("Label CCCCCC DDDDDD:");
label2.setMinWidth(Region.USE_PREF_SIZE);
TextField textField2 = new TextField();
GridPane.setHgrow(textField2, Priority.ALWAYS);
textField2.setMinWidth(10);

gridPane.add(label1, 0, index);
gridPane.add(textField1, 1, index);
gridPane.add(label2, 2, index);
gridPane.add(textField2, 3, index);
}

public static void main(String[] args) {
launch(args);
}
}
И вот результат:
[img]https://i.sstatic.net /AJIaJj8J.gif[/img]

Как видите, вначале все работает хорошо. Ширина столбца 1 равна ширине столбца 3. Однако, когда значение выбрано в ComboBox, столбец 1 становится шире столбца 3.
Может ли кто-нибудь сказать, как это исправить? это?

Подробнее здесь: https://stackoverflow.com/questions/793 ... ombobox-in
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»