Как заставить JScrollPane прокручивать только по вертикали? - PullRequest
14 голосов
/ 24 января 2011

Ребята, мне нужно поместить несколько кнопок в панель jscrollPane, но JScrollPane не будет создавать прокрутку по вертикали.Я использую JPanel внутри JScrollPane, которая использует простой макет FlowLayout.Как я могу заставить JScrollPanel прокручивать только по вертикали ??

Проблема:

enter image description here

Желаемое решение: enter image description here

Ответы [ 6 ]

13 голосов
/ 24 января 2011

Проверьте макет Wrap

4 голосов
/ 14 октября 2011
JTextArea c = new JTextArea();
c.setLineWrap(true);
c.setWrapStyleWord(false);

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

4 голосов
/ 24 января 2011

Тот факт, что вы используете JScrollPane, меняет довольно много вещей, касающихся внутреннего FlowLayout.действительно, когда FlowLayout пытается макетировать JButtons, он использует для этого доступное пространство.В вашем случае у вас нет ограничений на пространство в «прокручиваемом клиенте» вашей JScrollPane.Как следствие, учитывая, что ваш FlowLayout имеет бесконечное пространство, он использует это пространство для отображения элементов в соответствии с ним.

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

от JScrollPane. Однако вы бы даже в этом случае не получили возврат вашей строки, так как FlowLayout не очень хорошо справился с этим случаем.

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

1 голос
/ 24 января 2011
scrollbar = new Scrollbar(Scrollbar.VERTICAL);
0 голосов
/ 07 марта 2014

Или вы можете использовать JList .

Смотрите этот сайт для получения дополнительной информации: http://docs.oracle.com/javase/tutorial/uiswing/components/list.html

пример класса: ListDialog использует только вертикальную полосу прокрутки, когда размер окна изменяется или элементы не соответствуют виду.

...