Панель прокрутки JScrollPane


Наблюдая за поведением компонента JTextArea в предыдущем примере, легко можно обнаружить проблемы, которые возникают, когда тексту становится «тесно» в рамках отведенного места. В зависимости от используемого менеджера расположения текст либо обрезается, уходя за границы компонента, либо раздвигает эти границы (но в любом случае остается ограничен размером окна). В таких случаях типично использование полос прокрутки.

Для добавления полосы прокрутки к элементу служит компонент JScrollPane – панель прокрутки. Чаще всего она просто «надевается» на требуемый объект посредством собственного конструктора, принимающего этот объект в качестве параметра. Например, чтобы текстовая область textArea из предыдущего примера обрела полосы прокрутки, необходимо заменить команду

getContentPane().add(textArea);

на команду

getContentPane().add(new JScrollPane(textArea));

В этой команде создается панель с полосами прокрутки, в нее помещается объект textArea, а сама панель добавляется в панель содержимого окна. Теперь текст свободно прокручивается. А в случае применения менеджера FlowLayout или BoxLayout компонент JTextArea не будет подстраиваться под свое содержимое (будет иметь предпочтительный размер, соответствующий параметрам конструктора) и, при необходимости, отображать полоски прокрутки.

Полезными методами JScrollPane являются:

setHorizontalScrollBarPolicy(int policy) – позволяет задать стратегию работы с горизонтальной полосой прокрутки. Возможные значения представлены константами HORIZONTAL_SCROLLBAR_ALWAYS (отображать всегда), HORIZONTAL_SCROLLBAR_AS_NEEDED (отображать при необходимости) и HORIZONTAL_SCROLLBAR_NEVER (не отображать никогда). Данные константы определены в интерфейсе ScrollPaneConstants.

setVerticalScrollBarPolicy(int policy) позволяет задать стратегию работы с вертикальной полосой прокрутки посредством констант VERTICAL_SCROLLBAR_ALWAYS, VERTICAL_SCROLLBAR_AS_NEEDED и VERTICAL_SCROLLBAR_NEVER.

В интерфейсе ScrollPaneConstants, не описано ни одного метода, а содержатся исключительно константы. Необходимо отметить, что класс SwingConstants, использовавшийся для указания выравнивания, также содержит только константы. Если класс (в наших примерах это SimpleWindow) часто использует константы, определенные в подобном интерфейсе (например, для выравнивания множества компонентов), используется прием, позволяющий сократить объем кода. Класс может реализовать нужный интерфейс и использовать все его константы как свои. Например, мы могли бы переписать определение класса SimpleWindow следующим образом:

class SimpleWindow extends JFrame implements ScrollPaneConstants {...}

и вместо

ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER

писать просто

HORIZONTAL_SCROLLBAR_NEVER

везде, где это необходимо.



Дата добавления: 2017-01-26; просмотров: 1584;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.