SWT ScrolledComposite обрезает информацию.

Я делаю приложение, которое имеет много строк данных, возвращаемых из заглушки базы данных (которая станет базой данных Oracle), и по какой-то причине полоса прокрутки останавливается примерно на 500-м элементе. Мне интересно, есть ли все элементы, отображаемые в пределах полосы прокрутки?

2 ответа

Здесь я предполагаю, что вы используете Windows, потому что есть довольно общая проблема с полосами прокрутки в Windows: максимальное значение - короткое целое число, 32 768. Следовательно, если высота внутреннего компоновщика объекта ScrolledComposite превышает 32 768 пикселей, он будет обрезан.

Я не нашел надежного способа исправить это, но есть обходной путь: отделите полосу прокрутки от композита, который вы хотите прокрутить. Вы не можете создать ScrollBar, но вы можете создать ScrolledComposite точно такой же ширины, как ScrollBar, затем присоединить к нему ScrollListener и настроить его положение компоновки прокрутки.

Где-то у меня есть фрагмент, но я даже не совсем уверен, применим ли этот диагноз к вашему сценарию.

Возможно, вам придется установить минимальное и максимальное значения ScrollBar. Вы должны использовать методы setMinimum() и setMaximum() соответственно.

Это также хорошая идея, чтобы установить приращение страницы. Это количество линий прокрутки, на которое изменяется выбранное значение, когда пользователь щелкает область между большим пальцем и кнопками со стрелками или нажимает кнопки Page Up или Page Down. Вы бы использовали метод setPageIncrement().

Наконец, Oracle может навязать максимальное количество строк, которое вы можете извлечь из таблицы. Я считаю, что по умолчанию 500 строк.

Другие вопросы по тегам