JavaFX, столбцы в TableView изменяют размер после перемещения

У меня есть TableView с количеством столбцов, которое превышает ширину экрана. Когда он загружается в первый раз, все столбцы имеют одинаковую ширину, но, как только я переместил один из них, все они будут изменены до ширины, равной максимальной ширине данных внутри ячеек столбца.

Мой вопрос: возможно ли отключить это поведение или заставить его работать до первой загрузки TableView?

PS: TableView загружается пустым, после нажатия кнопки он заполняется данными, потому что у вас есть какое-то ключевое поле для ввода перед отправкой запроса данных.

2 ответа

Решение

После некоторых тестов я обнаружил, что причиной описанного поведения было: не настройка простоты столбца prefWidth.

Если вы создадите табличное представление с данными внутри с начала и без установки prefWidth столбца, ширина всех столбцов будет соответствовать максимальной ширине данных, и, если вы измените ширину столбца, при ее перетаскивании ширина будет восстановлена ​​до исходного значения.

Если вы создадите табличное представление с данными внутри, начиная с начала и настройки prefWidth столбца, ширина всех столбцов будет соответствовать установленному значению, и если вы увеличите столбец до его перетаскивания, то ширина этого столбца останется неизменной.

Я понятия не имею, если это ошибка или это нужно. Однако, спасибо вам за предложения.

Когда он загружается в первый раз, все столбцы имеют одинаковую ширину, но, как только я переместил один из них, все они будут изменены до ширины, равной максимальной ширине данных внутри ячеек столбца.

Такое поведение довольно странно. Я не уверен, что это так, как задумано, или это ошибка. Если вы считаете, что это ошибка, отправьте ее в баг-трекер JavaFX.

По ходу я предполагаю, что вы имеете в виду, что вы нажимаете на заголовок таблицы и перетаскиваете столбец в другую позицию, чтобы изменить порядок столбцов.

Кажется, есть (по крайней мере) два способа исправить это так, чтобы заданная пользователем ширина столбца сохранялась после перемещения столбца.

A. Использование CONSTRAINED_RESIZE_POLICY (в основном) исправляет это.

table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);

ИЛИ ЖЕ

Б. Привязать prefWidth каждого столбца к его фактической ширине.

firstNameCol.prefWidthProperty().bind(firstNameCol.widthProperty());
Другие вопросы по тегам