WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Архив » Акселерированные меню

Акселерированные меню


Дата публикации: 17-03-2013

Удобство - вот сущность пользовательского интерфейса. Вот поэтому мы и обращаемся к дизайну пользовательского интерфейса. Если интерфейс вашей программы имеет меню, то они должны иметь удобную возможность - акселерированные клавиши, типа "Ctrl-S" для сохранения. Акселерированные клавиши делают меню более удобными для операций пользователя. Он может оперировать ими более легко и быстро с клавиатуры.

Давайте посмотрим, как мы можем внедрить клавиатурные акселераторы в Java программу. Класс java.awt.MenuShortcut предоставляет клавиатурный акселератор для java.awt.MenuItem. Ниже простой пример:


import java.awt.*;
import java.awt.event.*;

/** Convenience class to prepare a menu item. */
class MyMenuItem extends MenuItem {

/** Constructs a menu item with the specified shortcut key. */
public MyMenuItem(String label, int shortcutKey) {
this(label, shortcutKey, false);
}

/** Constructs a menu item with the specified shortcut key and
with/without the key. */
public MyMenuItem(String label, int shortcutKey,
boolean useShiftModifier) {
super(label);
setActionCommand(label);
setShortcut(new MenuShortcut(shortcutKey, useShiftModifier));
}

}

/** Demonstrates the use of menu shortcuts. */
public class MenuShortcutDemo extends Frame implements ActionListener {

// The labels for the individual menu items
public final static String OPEN_CMD = "Open";
public final static String SAVE_CMD = "Save";
public final static String PROP_CMD = "Properties";
public final static String EXIT_CMD = "Exit";

// The text area to show the output messages
private TextArea status;

/** Initialize. */
public MenuShortcutDemo() {
super("Menu Shortcut Demo");
}

/** Prepares the menu. */
public void prepareMenu() {

// Set the menu bar
MenuBar mb = new MenuBar();
setMenuBar(mb);

// Prepare the menu
Menu fileMenu = new Menu("File");
MenuItem openItem = new MyMenuItem(OPEN_CMD, KeyEvent.VK_O);
MenuItem saveItem = new MyMenuItem(SAVE_CMD, KeyEvent.VK_S);
MenuItem propItem = new MyMenuItem(PROP_CMD, KeyEvent.VK_P, true);
MenuItem exitItem = new MyMenuItem(EXIT_CMD, KeyEvent.VK_X);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.addSeparator();
fileMenu.add(propItem);
fileMenu.addSeparator();
fileMenu.add(exitItem);

// Add menu to the menu bar
mb.add(fileMenu);

// Set the action listener
fileMenu.addActionListener(this);

}

/** Prepares the menu and adds an output textarea to the frame. */
public void initializeUI() {
// Prepare menu
prepareMenu();

// The text area for showing the output messages
status = new TextArea("", 10, 40);
status.setEditable(false);
add(status, BorderLayout.CENTER);

// Pack and show the frame
pack();
setVisible(true);
}

/** Handles menu actions (dummy method). */
public void actionPerformed(ActionEvent ae) {
String cmd = ae.getActionCommand();
if (cmd.equals(OPEN_CMD)) {
status.append("Open a file./n");
}
else if (cmd.equals(SAVE_CMD)) {
status.append("Save file./n");
}
else if (cmd.equals(PROP_CMD)) {
status.append("Show properties./n");
}
else if (cmd.equals(EXIT_CMD)) {
dispose();
System.exit(1);
}
}

/** Main. */
public static void main(String[] args) {

MenuShortcutDemo md = new MenuShortcutDemo();
md.initializeUI();

}

}
В этом примере метод main() инициализирует пользовательский интерфейс, используя метод initializeUI(). Этот метод сначала создает меню для приложения а затем добавляет текстовую область для отображения выходных сообщений. Завершение создания меню происходит в методе prepareMenu(). Сначала он устанавливает строку меню приложения, затем создает меню File и добавляет в него индивидуальные пункты создавая представления класса MyMenuItem.

Конструктор класса MyMenuItem делает две важные вещи:
1. Инициализирует метки пунктов меню
2. Устанавливает клавиши быстрого вызова (shortcut) для них

Метод setShortcut() из java.awt.MenuShortcut используется для установки клавиш быстрого вызова (shortcuts), которые воспринимают саму клавишу вызова и дополнительный флаг как параметры. Этот флаг сообщает, если была нажата клавиша во время нажатия клавиши быстрого вызова.

Как вы можете видеть - довольно легко применить эту возможность в пользовательском интерфейсе. Но следует держать все время в памяти одну важную вещь, заключающуюся в том, что бы выбирать клавиши акселерации в соответствии с уже устоявшимися стандартами, типа "Ctrl-O" для открытия файла. Для не устоявшихся ассоциаций клавиш и действий старайтесь, где это только возможно использовать интуитивно понятные сочетания, легкие для запоминания. Если кратко, то акселерированные меню - приятная возможность интерфейса и вы должны пытаться внедрять ее в ваши пользовательские интерфейсы.

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Март 2017 (1)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта

Хотите продать свой сайт?
- Мы быстро и удобно для Вас сможем его купить:
  • Заявка на продажу сайта
  • Раcсматриваем цены на каждый сайт в индивидуальном порядке.

    Случайная цитата

    Боб Хейз:

    "Пятнадцать лет назад компании конкурировали друг с другом в цене. Сейчас - это качество. Завтра - это дизайн."

    Опрос

    Ваша ОС?

    Windows XP
    Windows 7
    др. версия Windows
    Linux
    др. ОС