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

Как Использовать Действия

Action может использоваться, чтобы разделить функциональность и состояние от компонента. Например, если у Вас есть два или больше компонента, которые выполняют ту же самую функцию, рассматривают использование Action возразите, чтобы реализовать функцию. Action объект является слушателем действия, который обеспечивает не только обработку событий действия, но также и централизованную обработку состояния компонентов увольнения события действия, таких как кнопки на панели инструментов, пункты меню, общие кнопки, и текстовые поля. Состояние, которое может обработать действие, включает текст, значок, мнемосхему, включенную, и выбранное состояние.

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

Вот пример создания кнопки на панели инструментов и пункта меню, которые выполняют ту же самую функцию:

Action leftAction = new LeftAction(); //LeftAction code is shown later
...
button = new JButton(leftAction)
...
menuItem = new JMenuItem(leftAction);

Создать Action объект, Вы обычно создаете подкласс AbstractAction и затем инстанцируйте этого. В Вашем подклассе следует реализовать actionPerformed метод, чтобы реагировать соответственно, когда событие действия имеет место. Вот пример создания и инстанцирования AbstractAction подкласс:

leftAction = new LeftAction("Go left", anIcon,
             "This is the left button.",
             new Integer(KeyEvent.VK_L));
...
class LeftAction extends AbstractAction {
    public LeftAction(String text, ImageIcon icon,
                      String desc, Integer mnemonic) {
        super(text, icon);
        putValue(SHORT_DESCRIPTION, desc);
        putValue(MNEMONIC_KEY, mnemonic);
    }
    public void actionPerformed(ActionEvent e) {
        displayResult("Action for first button/menu item", e);
    }
}

Когда действие, создаваемое предыдущим кодом, присоединено к кнопке и пункту меню, кнопка и пункт меню выводят на экран текст и значок, связанный с действием. L символ используется для мнемоники на кнопке и пункте меню, и их текст подсказки устанавливается в SHORT_DESCRIPTION строка следовала представлением ускоряющей клавиши.

Например, мы обеспечили простой пример, ActionDemo.java, который определяет три действия. Каждое действие присоединено к кнопке и пункту меню. Благодаря мнемоническому набору значений для действия каждой кнопки, сочетания клавиш Alt-L активирует левую кнопку, Alt-M средняя кнопка, и Alt-R правильная кнопка. Подсказка для левой кнопки выводит на экран, Это - левая кнопка. Alt-L. Вся эта конфигурация происходит автоматически без программы, выполняющей явные вызовы, чтобы установить текст мнемонической или подсказки. Поскольку мы покажем позже, программа действительно выполняет вызовы, чтобы установить текст кнопки, но только избегать использования значений, уже установленных действиями.

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

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

    Запускает пример ActionDemo
  2. Выберите главный элемент из левого меню (Меню> Идут оставленные).
    Текстовая область выводит на экран некоторый текст, идентифицирующий и источник события и слушателя действия, который получил событие.

  3. Нажмите крайнюю левую кнопку на панели инструментов.
    Текстовая область снова выводит на экран информацию о событии. Отметьте, что, хотя источник событий отличается, оба события были обнаружены тем же самым слушателем действия: Action объект, присоединенный к компонентам.

  4. Выберите главный элемент из меню государства Действия.
    Это отключает, "Идут оставленные" Action объект, который поочередно отключает его связанный пункт меню и кнопку.


Вот то, что видит пользователь, когда "Идут оставленные" действие, отключается:

Снимок ActionDemo, когда
Снимок ActionDemo, когда

Вот код, который отключает, "Идут оставленные" действие:

boolean selected = ...//true if the action should be enabled;
                      //false, otherwise
leftAction.setEnabled(selected);

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

menuItem = new JMenuItem();
menuItem.setAction(leftAction);
menuItem.setIcon(null); //arbitrarily chose not to use icon in menu
...
button = new JButton();
button.setAction(leftAction);
button.setText(""); //an icon-only button

Мы хотели создавать кнопку только для значка и пункт меню только для текста от того же самого действия, устанавливая свойство значка в null и текст к пустой строке. Однако, если свойство Action изменения, виджет может попытаться сбросить значок и текст от Action снова.

API Действия

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

Компоненты та Поддержка set/getAction
Класс Цель
AbstractButton
JComboBox
JTextField
Этим компонентам и их подклассам можно было присвоить действие непосредственно им через setAction. Для дополнительной информации о компонентах, которые часто связываются с действиями, см. разделы по кнопкам на панели инструментов, пунктам меню, общим кнопкам, и текстовым полям. Для получения дополнительной информации, на которых свойствах каждый компонент берет от Action, см. документацию API для соответствующего class configurePropertiesFromAction метод. Также обратитесь к buttonActions таблица.
Создание и Используя AbstractAction
Конструктор или Метод Цель
AbstractAction ()
AbstractAction (Строка)
AbstractAction (Строка, Значок)
Создайте Action объект. Через параметры можно определить текст и значок, который будет использоваться в компонентах, к которым присоединено действие.
освободите (булев) setEnabled
булев isEnabled ()
Набор или добирается, включаются ли компоненты средства управления действием. Вызов setEnabled(false) отключает все компоненты, которыми управляет действие. Точно так же вызов setEnabled(true) включает компонентам действия.
освободите putValue (Строка, Объект)
Возразите getValue (Строка)
Набор или получает объект, связанный с указанным ключом. Используемый для установки и получения свойств связался с действием.

Свойства действия

Эта таблица определяет свойства, которые могут быть установлены на действии. Вторые списки столбцов, какие компоненты автоматически используют свойства (и какой метод определенно вызывают). Например, установка ACCELERATOR_KEY на действии, которое тогда присоединено к пункту меню, средства это JMenuItem.setAccelerator(KeyStroke) вызывается автоматически.

Свойство Автопримененный к:
Класс
(Вызванный метод)
Цель
ACCELERATOR_KEY JMenuItem
(setAccelerator)
KeyStroke использоваться в качестве акселератора для действия. Для обсуждения акселераторов против мнемоники см. Работу Клавиатуры Включения. Представленный в 1.3.
ACTION_COMMAND_KEY AbstractButton, JCheckBox, JRadioButton
(setActionCommand)
Командная строка, связанная с ActionEvent.
LONG_DESCRIPTION Ни один Более длинное описание для действия. Может использоваться для контекстно-зависимой справки.
MNEMONIC_KEY AbstractButton, JMenuItem, JCheckBox, JRadioButton
(setMnemonic)
Мнемосхема для действия. Для обсуждения акселераторов против мнемоники см. Работу Клавиатуры Включения. Представленный в 1.3.
ИМЯ AbstractButton, JMenuItem, JCheckBox, JRadioButton
(setText)
Имя действия. Можно установить это свойство, создавая действие, используя AbstractAction(String) или AbstractAction(String, Icon) конструкторы.
SHORT_DESCRIPTION AbstractButton, JCheckBox, JRadioButton
(setToolTipText)
Краткое описание действия.
SMALL_ICON AbstractButton, JMenuItem
(setIcon)
Значок для действия, используемого на панели инструментов или на кнопке. Можно установить это свойство, создавая действие, используя AbstractAction(name, icon) конструктор.

Примеры то Использование Действия

Следующее использование в качестве примера Action объекты.

Пример Где Описано Примечания
ActionDemo Этот раздел Действия использования, чтобы связать кнопки и пункты меню к той же самой функции.
TextComponentDemo Текстовые Компонентные Функции Текстовые действия использования, чтобы создать пункты меню для команд редактирования текста, такой как сокращено, копируют, и вставка, и связывать нажатия клавиш с перемещением каре. Также пользовательские реализации AbstractAction подклассы, чтобы реализовать отмену и восстановление. Текстовое обсуждение действия начинается в Понятиях: О Редакторе Китсе.

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

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