Размер JFrame изменяется, а полосы прокрутки не отображаются - PullRequest
1 голос
/ 21 декабря 2011

Я разработал форму Swing.Он состоит из JScrollPane, который сам содержит еще один JPanel.Из-за некоторого события пользовательского интерфейса Component добавляется к этому JPanel.Это просто окно сообщения, в котором сообщения добавляются в список по мере их поступления.Вопрос в том, как сделать изменение на этом JPanel видимым.Чтобы достичь этого, я просто вызываю метод JFrame#pack().Но вызов этого изменяет размер моего фрейма до размера контейнера, игнорируя изначально установленную границу prefferedSize, and maximumSize.И полосы прокрутки также не становятся видимыми, просто рамка становится больше по высоте, когда компонент добавляется к панели.Я хочу, чтобы мой фрейм оставался в своем первоначальном размере, и полосы прокрутки должны вступать в действие, когда общий размер компонента превышает размер фрейма.Куда я иду не так?Пожалуйста помоги.Это мой начальный экран: enter image description here

Это экран, когда компонент добавляется: enter image description here

1 Ответ

3 голосов
/ 21 декабря 2011

При добавлении компонентов на панель общий код выглядит следующим образом:

panel.add(...);
panel.revalidate();

Метод revalidate () пересчитает предпочтительный размер панели.Если предпочтительный размер больше, чем размер полосы прокрутки, то появятся полосы прокрутки.

Конечно, вы должны использовать менеджеры компоновки, чтобы эта функция выполнялась автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...