Spec-Zone .ru
спецификации, руководства, описания, API
|
Action
может использоваться, чтобы разделить функциональность и состояние от компонента. Например, если у Вас есть два или больше компонента, которые выполняют ту же самую функцию, рассматривают использование Action
возразите, чтобы реализовать функцию. Action
объект является
Вы обычно присоединяете действие к компоненту, используя setAction
метод. Вот то, что происходит когда setAction
вызывается на компонент:
Action
. Например, если Action
's текст и значения значка были установлены, текст компонента и значок устанавливаются в те значения.Action
объект регистрируется как слушатель действия на компоненте.Action
изменения, состояние компонента обновляется, чтобы соответствовать Action
. Например, если Вы изменяете включенное состояние действия, все компоненты, это присоединено к изменению их включенные состояния, чтобы соответствовать действие.Вот пример создания кнопки на панели инструментов и пункта меню, которые выполняют ту же самую функцию:
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. Вся эта конфигурация происходит автоматически без программы, выполняющей явные вызовы, чтобы установить текст мнемонической или подсказки. Поскольку мы покажем позже, программа действительно выполняет вызовы, чтобы установить текст кнопки, но только избегать использования значений, уже установленных действиями.
Нажмите кнопку Launch, чтобы работать, ActionDemo, используя
Выберите главный элемент из левого меню (Меню> Идут оставленные).
Текстовая область выводит на экран некоторый текст, идентифицирующий и источник события и слушателя действия, который получил событие.
Нажмите крайнюю левую кнопку на панели инструментов.
Текстовая область снова выводит на экран информацию о событии. Отметьте, что, хотя источник событий отличается, оба события были обнаружены тем же самым слушателем действия: Action
объект, присоединенный к компонентам.
Выберите главный элемент из меню государства Действия.
Это отключает, "Идут оставленные" Action
объект, который поочередно отключает его связанный пункт меню и кнопку.
Вот то, что видит пользователь, когда "Идут оставленные" действие, отключается:
|
|
Вот код, который отключает, "Идут оставленные" действие:
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
снова.
Следующие таблицы приводят обычно используемый Action
конструкторы и методы. API для того, чтобы использовать Action
объекты попадают в три категории:
Класс | Цель |
---|---|
|
Этим компонентам и их подклассам можно было присвоить действие непосредственно им через setAction . Для дополнительной информации о компонентах, которые часто связываются с действиями, см. разделы по Action , см. документацию API для соответствующего class configurePropertiesFromAction buttonActions |
Конструктор или Метод | Цель |
---|---|
|
Создайте Action объект. Через параметры можно определить текст и значок, который будет использоваться в компонентах, к которым присоединено действие. |
|
Набор или добирается, включаются ли компоненты средства управления действием. Вызов setEnabled(false) отключает все компоненты, которыми управляет действие. Точно так же вызов setEnabled(true) включает компонентам действия. |
|
Набор или получает объект, связанный с указанным ключом. Используемый для установки и получения свойств связался с действием. |
Эта таблица определяет свойства, которые могут быть установлены на действии. Вторые списки столбцов, какие компоненты автоматически используют свойства (и какой метод определенно вызывают). Например, установка ACCELERATOR_KEY
на действии, которое тогда присоединено к пункту меню, средства это JMenuItem.setAccelerator(KeyStroke)
вызывается автоматически.
Свойство | Автопримененный к: Класс (Вызванный метод) |
Цель |
---|---|---|
|
JMenuItem (setAccelerator) |
KeyStroke использоваться в качестве акселератора для действия. Для обсуждения акселераторов против мнемоники см. |
|
AbstractButton , JCheckBox , JRadioButton (setActionCommand) |
Командная строка, связанная с ActionEvent . |
|
Ни один | Более длинное описание для действия. Может использоваться для контекстно-зависимой справки. |
|
AbstractButton , JMenuItem , JCheckBox , JRadioButton (setMnemonic) |
Мнемосхема для действия. Для обсуждения акселераторов против мнемоники см. |
|
AbstractButton , JMenuItem , JCheckBox , JRadioButton (setText) |
Имя действия. Можно установить это свойство, создавая действие, используя AbstractAction(String) или AbstractAction(String, Icon) конструкторы. |
|
AbstractButton , JCheckBox , JRadioButton (setToolTipText) |
Краткое описание действия. |
|
AbstractButton , JMenuItem (setIcon) |
Значок для действия, используемого на панели инструментов или на кнопке. Можно установить это свойство, создавая действие, используя AbstractAction(name, icon) конструктор. |
Следующее использование в качестве примера Action
объекты.
Пример | Где Описано | Примечания |
---|---|---|
ActionDemo |
Этот раздел | Действия использования, чтобы связать кнопки и пункты меню к той же самой функции. |
TextComponentDemo |
|
Текстовые действия использования, чтобы создать пункты меню для команд редактирования текста, такой как сокращено, копируют, и вставка, и связывать нажатия клавиш с перемещением каре. Также пользовательские реализации AbstractAction подклассы, чтобы реализовать отмену и восстановление. Текстовое обсуждение действия начинается в Понятиях: О Редакторе Китсе. |