Spec-Zone .ru
спецификации, руководства, описания, API
След: Создание GUI С JFC/Swing
Урок: Используя Компоненты Swing
Раздел: Как Использовать Различные Компоненты
Как Использовать Разделители
Домашняя страница > Создание GUI С JFC/Swing > Используя Компоненты Swing

Как Использовать Разделители

JSeparator class обеспечивает горизонталь или вертикальную разделительную линию или пустое место. Это обычно используется в меню и панелях инструментов. Фактически, можно использовать разделители, даже не зная это a JSeparator class существует, так как меню и панели инструментов обеспечивают методы удобства, которые создают и добавляют разделители, настроенные для их контейнеров. Разделители несколько подобны границам, за исключением того, что они - подлинные компоненты и, как таковые, оттягиваются в контейнере, а не вокруг краев определенного компонента.

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

Меню с 4 частями, как обозначено 3 разделителями

Код, чтобы добавить пункты меню и разделители к меню чрезвычайно прост, сводясь к чему-то вроде этого:

menu.add(menuItem1);
menu.add(menuItem2);
menu.add(menuItem3);
menu.addSeparator();
menu.add(rbMenuItem1);
menu.add(rbMenuItem2);
menu.addSeparator();
menu.add(cbMenuItem1);
menu.add(cbMenuItem2);
menu.addSeparator();
menu.add(submenu);

Добавление разделителей на панель инструментов подобно. Можно счесть полный код объясненным в разделах с практическими рекомендациями для меню и панелей инструментов. Если Вы хотите больше управления разделителями в меню и панелях инструментов, можно непосредственно использовать JSeparator подклассы, которые реализуют их: JPopupMenu. Разделитель и JToolBar. Разделитель. В частности JToolBar.Separator имеет API для того, чтобы определить размер разделителя.

Используя JSeparator

Можно использовать JSeparator class непосредственно, чтобы обеспечить разделительную линию в любом контейнере. Следующее изображение показывает GUI, у которого есть разделитель направо от кнопки маркированный Огонь.

Снимок ListDemo

Разделители не имеют почти никакого API и чрезвычайно удобны, пока Вы помните одну вещь: В большинстве реализаций у вертикального разделителя есть привилегированный height 0, и у горизонтального разделителя есть привилегированный width 0. Это означает, что разделитель не видим, если Вы или не устанавливаете его привилегированный размер или вставляете его под управлением менеджера по расположению такой как BorderLayout или BoxLayout это расширяет это, чтобы заполнить его доступную область дисплея.

У вертикального разделителя действительно есть немного width (и горизонталь немного height), таким образом, следует видеть некоторое пространство, где разделитель. Однако, фактическая разделительная линия не оттягивается, если width и height не оба ненулевые.

Следующий фрагмент кода показывает, как ListDemo соединяет панель, которая содержит вертикальный разделитель. Можно найти полный исходный код для ListDemo в ListDemo.java.

JPanel buttonPane = new JPanel();
buttonPane.setLayout(new BoxLayout(buttonPane,
                                   BoxLayout.LINE_AXIS));
buttonPane.add(fireButton);
buttonPane.add(Box.createHorizontalStrut(5));
buttonPane.add(new JSeparator(SwingConstants.VERTICAL));
buttonPane.add(Box.createHorizontalStrut(5));
buttonPane.add(employeeName);
buttonPane.add(hireButton);
buttonPane.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));

Поскольку код показывает, кнопки, разделитель, и текстовое поле вся доля единственный контейнер — a JPanel экземпляр, который использует слева направо расположение поля. Благодаря менеджеру по расположению (и к факту, что у разделителей есть неограниченные максимальные размеры), разделитель автоматически делается столь же высоким как своя доступная область дисплея.

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

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

Снимок TextInputDemo

Можно найти, что код в примере индексирует. Вот код, который устанавливает контейнер разделителя:

JPanel panel = new JPanel(new BorderLayout());
...
panel.setBorder(BorderFactory.createEmptyBorder(
                        GAP/2, //top
                        0,     //left
                        GAP/2, //bottom
                        0));   //right
panel.add(new JSeparator(JSeparator.VERTICAL),
          BorderLayout.LINE_START);
panel.add(addressDisplay,
          BorderLayout.CENTER);

Как в последнем примере, панель использует пустую границу так, чтобы разделитель не расширился полностью на края его контейнера. Размещение разделителя в крайней левой области BorderLayout- управляемый контейнер делает разделитель столь же высоким как компонент дисплея адреса, это находится в центре контейнера. См., Как Использовать BorderLayout для деталей о том, как работают разметки границы.

API Разделителя

API для того, чтобы использовать разделители минимален, так как они не имеют никакого содержания и не отвечают на ввод данных пользователем.

Создание и Инициализация Разделителей
Конструктор или Метод Цель
освободите addSeparator ()
освободите addSeparator (Размерность)
JToolBar)
Добавьте разделитель панели инструментов (который невидим в больше всего, если не все, смотрите и чувства) к текущему концу панели инструментов. Дополнительный параметр определяет размер разделителя. Версия без параметров этого метода использует разделитель с размером значения по умолчанию, как определено текущим стилем.
освободите addSeparator ()
освободите insertSeparator (интервал)
JMenu)
Поместите разделитель в меню. addSeparator метод помещает разделитель в текущий конец меню. insertSeparator метод вставляет разделитель в меню в указанной позиции.
освободите addSeparator ()
JPopupMenu)
Поместите разделитель в текущий конец раскрывающегося меню.
JSeparator ()
JSeparator (интервал)
Создайте разделитель. Если Вы не определяете параметр, разделитель является горизонталью. Параметр может быть также SwingConstants.HORIZONTAL или SwingConstants.VERTICAL.
освободите setOrientation (интервал)
интервал getOrientation ()
JSeparator)
Получите или установите ориентацию разделителя, которая может быть также SwingConstants.HORIZONTAL или SwingConstants.VERTICAL.
JToolBar. Разделитель ()
JToolBar. Разделитель (Размерность)
Создайте разделитель для использования на панели инструментов. Дополнительный параметр определяет размер разделителя.
setSeparatorSize (Размерность)
JToolBar.Separator)
Определите размер разделителя. Более определенно, указанное Dimension используется в качестве минимума разделителя, предпочтенного, и максимальные размеры.
JPopupMenu. Разделитель () Создайте разделитель для использования в меню.

Примеры то Использование Разделители

Несколько из примеров этого урока используют разделители, обычно в меню. Вот список некоторых из более интересных примеров.

Пример Где Описано Примечания
ListDemo Этот раздел и Как Использовать Списки Использует вертикальный разделитель в панели, которой управляет горизонтальное расположение поля.
TextInputDemo Этот раздел и Как Использовать Отформатированные Текстовые поля Использует вертикальный разделитель слева от панели, которой управляет расположение границы.
MenuDemo Этот раздел и Как Использовать Меню Использование JMenu метод addSeparator помещать разделители в меню.
ToolBarDemo2 Как Использовать Панели инструментов Использование JToolBar метод addSeparator помещать пространство между двумя видами кнопок.

Если Вы программируете в JavaFX, см. Используя JavaFX Средства управления UI.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Как Использовать Области прокрутки
Следующая страница: Как Использовать Ползунки