JViewports с нулевыми макетами?

#java #swing #layout #awt #viewport

#java #качать #макет #awt #окно просмотра

Вопрос:

Я получил корректную прокрутку JViewport с помощью менеджера макетов по умолчанию (используя viewport.setViewPosition), но когда я вызываю setLayout (null), это больше не работает.

Есть идеи?

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

Спасибо!

Редактировать: Пока спасибо за информацию. Я использовал нулевой макет, чтобы я мог точно позиционировать компоненты, которые я нарисую позже, есть ли способ, которым я могу это сделать, используя менеджер макетов?

Комментарии:

1. как в «Я выбросил свою волшебную палочку, и теперь мне интересно, почему мои заклинания больше не работают» 🙂

Ответ №1:

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

При использовании нулевого макета предпочтительный размер равен 0, поэтому панель прокрутки не работает. Вот почему вы должны использовать менеджер макетов. Это определит предпочтительный размер для вас.

Ответ №2:

Ни по какой причине не вызывайте setLayout(null).

У каждого компонента должен быть LayoutManager, который определяет размер и положение дочерних элементов. Поэтому используйте подходящий LayoutManager или реализуйте свой собственный.

Ответ №3:

Если вы вызываете setLayout(null), то вам нужно вызвать метод setbounds компонентного класса для каждого дочернего элемента. также вызовите метод repaint.

Комментарии:

1. Дочерний метод setBounds() не имеет никакого отношения к прокрутке.