Перевод на русский © Сергей Миссан, 2000
Оригинал статьи опубликован на сайте Javable.com
Java Q&A
Как мне установить горячие клавиши для меню и кнопок? Я использую JDK 1.1.4; отличаются ли соответствующие методы в JDK 1.2?
Пример ниже должен ответить на ваши вопросы о горячих клавишах в Java. Код показывает как установить быстрый доступ для меню, элемента меню, чек-бокса и кнопки. Вы можете выбрать горячую клавишу нажав Alt и код быстрого доступа.
Такой код будет работать и с JDK 1.1, и с JDK 1.2. Заметьте, что для JDK 1.1 вам нужна более новая версия Swing, чем 1.0.2.
import java.awt.*; import javax.swing.*; import java.awt.event.*; public class ShortCutKeys extends JApplet { JButton button; JCheckBox checkBox; JMenuBar menuBar; JMenu fileMenu; JMenuItem exitMenuItem; JPanel panel; public void init() { Container container = this.getContentPane(); Handler eventHandler = new Handler(); checkBox = new JCheckBox("Hello Mom!"); checkBox.setMnemonic (java.awt.event.KeyEvent.VK_M); checkBox.addActionListener(eventHandler); button = new JButton("Hello Dad!"); button.setMnemonic (java.awt.event.KeyEvent.VK_D); button.addActionListener(eventHandler); panel = new JPanel(); panel.setLayout(new FlowLayout()); panel.add(checkBox); panel.add(button); exitMenuItem = new JMenuItem("Exit"); exitMenuItem.setMnemonic('x'); exitMenuItem.addActionListener(eventHandler); fileMenu = new JMenu("File"); fileMenu.setMnemonic('f'); fileMenu.add(exitMenuItem); menuBar = new JMenuBar(); menuBar.add(fileMenu); container.add(menuBar, BorderLayout.NORTH); container.add(panel, BorderLayout.CENTER); } class Handler implements ActionListener { public void actionPerformed(ActionEvent ae) { if (ae.getSource() == checkBox) { System.err.println ("Action Performed on CHECKBOX"); } else if (ae.getSource() == button) { System.err.println ("Action Performed on BUTTON"); } else if (ae.getSource() == exitMenuItem) { System.exit(0); } } } public static void main(String[] args) { JFrame frame = new JFrame("Short Cut Keys"); ShortCutKeys sck = new ShortCutKeys(); sck.init(); frame.getContentPane().add(sck); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent we) { System.exit(0); } } ); frame.setSize(300, 100); frame.show(); } }
Reprinted with permission from the March 2000 edition of JavaWorld magazine.
Copyright © ITworld.com, Inc., an IDG Communications company.
View the original article at: http://www.javaworld.com/javaworld/javaqa/1999-09/02-qa-hotkeys.html
Назад | Содержание | Вперед