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

Как Использовать Панели инструментов

A JToolBar контейнер что группы несколько компонентов — обычно кнопки со значками — в строку или столбец. Часто, панели инструментов обеспечивают легкий доступ к функциональности, которая находится также в меню. То, как Использовать Действия, описывает, как обеспечить ту же самую функциональность в пунктах меню и кнопках на панели инструментов.

Следующие изображения показывают названное приложение ToolBarDemo это содержит панель инструментов выше текстовой области. Нажмите кнопку Launch, чтобы работать, ToolBarDemo, используя Сеть Java™ Запускаются (загрузите JDK 6 или позже). Альтернативно, чтобы скомпилировать и выполнить это непосредственно, консультируйтесь, пример индексируют.

Запускает Приложение ToolBarDemo
ToolBarDemo, с панелью инструментов на начальной северной позиции

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

ToolBarDemo, после того, как панель инструментов перетаскивается на восток

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

Следующие данные показывают, как приложение заботится о пользователе, перетащил панель инструментов за ее окном.

ToolBarDemo, после того, как панель инструментов вытаскивается в ее собственное окно

Следующий код создает панель инструментов и добавляет это к контейнеру. Можно найти всю программу в ToolBarDemo.java.

public class ToolBarDemo extends JPanel
                         implements ActionListener {
    ...
    public ToolBarDemo() {
        super(new BorderLayout());
        ...
        JToolBar toolBar = new JToolBar("Still draggable");
        addButtons(toolBar);
        ...
        setPreferredSize(new Dimension(450, 130));
        add(toolBar, BorderLayout.PAGE_START);
        add(scrollPane, BorderLayout.CENTER);
    }
    ...
}

Этот код располагает панель инструментов выше области прокрутки, помещая оба компонента в панель, которой управляет расположение границы с панелью инструментов на PAGE_START позиция и область прокрутки в CENTER позиция. Поскольку область прокрутки находится в центре, и никакие другие компоненты кроме панели инструментов не находятся в контейнере, по умолчанию панель инструментов может быть перетащена к другим краям контейнера. Панель инструментов может также быть вытащена в ее собственное окно, когда у окна есть title, "Все еще перемещаемый", как определено JToolBar конструктор.

Создание Кнопок на панели инструментов

Кнопки на панели инструментов обычны JButton экземпляры, которые используют изображения от Репозитария Графики Стили Java. Используйте изображения от Репозитария Графики Стили Java, если у Вашей панели инструментов есть стиль Java.

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

protected void addButtons(JToolBar toolBar) {
    JButton button = null;

    //first button
    button = makeNavigationButton("Back24", PREVIOUS,
                                  "Back to previous something-or-other",
                                  "Previous");
    toolBar.add(button);

    //second button
    button = makeNavigationButton("Up24", UP,
                                  "Up to something-or-other",
                                  "Up");
    toolBar.add(button);

    ...//similar code for creating and adding the third button...
}

protected JButton makeNavigationButton(String imageName,
                                       String actionCommand,
                                       String toolTipText,
                                       String altText) {
    //Look for the image.
    String imgLocation = "images/"
                         + imageName
                         + ".gif";
    URL imageURL = ToolBarDemo.class.getResource(imgLocation);

    //Create and initialize the button.
    JButton button = new JButton();
    button.setActionCommand(actionCommand);
    button.setToolTipText(toolTipText);
    button.addActionListener(this);

    if (imageURL != null) {                      //image found
        button.setIcon(new ImageIcon(imageURL, altText));
    } else {                                     //no image found
        button.setText(altText);
        System.err.println("Resource not found: " + imgLocation);
    }

    return button;
}

Первый звонок makeNavigationButton создает изображение для первой кнопки, используя 24x24 "Обратное" изображение навигации в графическом репозитарии.

Помимо обнаружения изображения для кнопки, makeNavigationButton метод также создает кнопку, устанавливает строки для ее команды действия и текста подсказки, и добавляет слушателя действия для кнопки. Если изображение отсутствует, метод печатает сообщение об ошибке и добавляет текст к кнопке, так, чтобы кнопка была все еще применима.


Отметьте: 

Если какие-либо кнопки на Вашей панели инструментов копируют функциональность других компонентов, таких как пункты меню, следует, вероятно, создать и добавить кнопки на панели инструментов как описано в том, Как Использовать Действия.


Настройка Панелей инструментов

Добавляя несколько строк кода к предыдущему примеру, мы можем демонстрировать еще некоторые функции панели инструментов:

Можно видеть эти функции, выполняя ToolBarDemo2. Нажмите кнопку Launch, чтобы работать, ToolBarDemo2, используя Сеть Java™ Запускаются (загрузите JDK 6 или позже). Альтернативно, чтобы скомпилировать и выполнить это непосредственно, консультируйтесь, пример индексируют.

Запускает Приложение ToolBarDemo2

Можно найти весь код для этой программы в ToolBarDemo2.java. Ниже Вас может видеть изображение нового UI, использующего эти специализированные функции.

ToolBarDemo2 показывает панель инструментов со множеством компонентов

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

toolBar.setFloatable(false);

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

toolBar.setRollover(true);

Другое видимое различие в примере выше - то, что панель инструментов содержит два новых компонента, которым предшествует пробел, названный разделителем. Вот код, который добавляет разделитель:

toolBar.addSeparator();

Вот код, который добавляет новые компоненты:

//fourth button
button = new JButton("Another button");
...
toolBar.add(button);

//fifth component is NOT a button!
JTextField textField = new JTextField("A text field");
...
toolBar.add(textField);

Можно легко сделать компоненты панели инструментов или выровненными вершиной или выровненными нижней частью вместо центрируемого, вызывая setAlignmentY метод. Например, чтобы выровнять вершины всех компонентов на панели инструментов, вызвать setAlignmentY(TOP_ALIGNMENT) на каждом компоненте. Точно так же можно использовать setAlignmentX метод, чтобы определить выравнивание компонентов, когда панель инструментов является вертикалью. Эта гибкость расположения возможна, потому что панели инструментов используют BoxLayout расположить их компоненты. Для получения дополнительной информации см., Как Использовать BoxLayout.

API Панели инструментов

Следующая таблица приводит обычно используемый JToolBar конструкторы и методы. Другие методы, которые Вы могли бы вызвать, перечисляются в таблицах API в Классе JComponent.

Метод или Конструктор Цель
JToolBar ()
JToolBar (интервал)
JToolBar (Строка)
JToolBar (Строка, интервал)
Создает панель инструментов. Дополнительный международный параметр позволяет Вам определять ориентацию; значение по умолчанию HORIZONTAL. Дополнительное String параметр позволяет Вам определять title окна панели инструментов, если это перетаскивается за пределами его контейнера.
Компонент добавляет (Компонент) Добавляет компонент к панели инструментов.

Можно связать кнопку с Action использование setAction(Action) метод, определенный AbstractButton.

освободите addSeparator () Добавляет разделитель до конца панели инструментов.
освободите (булев) setFloatable
булев isFloatable ()
Плавучее свойство является истиной по умолчанию, и указывает, что пользователь может вытащить панель инструментов в отдельное окно. Чтобы выключить перетаскивание панели инструментов, использовать toolBar.setFloatable(false). Некоторые типы стили могли бы проигнорировать это свойство.
освободите (булев) setRollover
булев isRollover ()
Динамическое свойство является ложью по умолчанию. Чтобы заставить кнопки на панели инструментов, которые будут обозначены визуально, когда пользователь передает по ним с курсором, устанавливает это свойство в истину. Некоторые типы стили могли бы проигнорировать это свойство.

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

Эта таблица приводит примеры то использование JToolBar и точки туда, где те примеры описываются.

Пример Где Описано Примечания
ToolBarDemo Эта страница Основная панель инструментов с кнопками только для значка.
ToolBarDemo2 Эта страница Демонстрирует неплавучую панель инструментов на динамическом режиме, который содержит разделитель и компонент некнопки.
ActionDemo Как Использовать Действия Реализует использование панели инструментов Action объекты.

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

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