Similar presentations:
Создание меню java
1. Создание меню java
СОЗДАНИЕ МЕНЮ JAVA2. Использование меню
■ Меню обеспечивает возможность пользователю выбирать одну из несколькихопций.
■ Меню не размещается с другими компонентами в UI и обычно появляется или
в строке меню или как раскрывающееся меню.
■ Раскрывающееся меню - меню, которое невидимо, пока пользователь не
сделает специфичное для платформы действие мыши, такое как нажатие правой
кнопки мыши, по раскрывающемуся поддерживающему компоненту.
Раскрывающееся меню тогда появляется под курсором.
3. Основные данные. Строка меню
■ Среди компонентов графического интерфейса пользователя библиотеки JavaSwing есть компонент - главное меню JMenuBar.
■ Главное меню JMenuBar, как правило располагается в верхней части окна
приложения в виде горизонтальной полоски. Меню может иметь произвольную
вложенность.
■ Меню состоит из пунктов меню. При клике на пункте меню могут происходить
какие-то действия, предусмотренные разработчиком.
4. Создание меню и его элементов
■ Создание строки меню:JMenuBar menuBar = new JMenuBar();
■ Размещение в верхнюю часть фрейма с помощью метода setJMenuBar():
frame.setJMenuBar(menuBar);
■ Создание объекта меню:
JMenu editMenu = new JMenu("Edit");
■ Размещение меню верхнего уровня в строке меню:
menuBar.add(editMenu);
■ Добавление в меню пункты, разделители и подменю:
JMenuItem pasteItem = new JMenuItem("Paste");
editMenu.add(pasteItem);
editMenu.addSeparator();
JMenu optionsMenu = ...; // Подменю.
editMenu.add(optionsMenu);
5. Создание меню и его элементов
Frame f = new Frame("Пример меню");f.setMenuBar(new MenuBar());
Menu mFile = new Menu("Файл");
mb.add(mFile);
Menu mEdit = new Menu("Правка");
mb.add(mEdit);
Menu mView = new Menu("Вид");
mb.add(mView);
Menu mHelp = new Menu("Справка");
mb.setHelpMenu(mHelp);
6. Создание меню и его элементов
Menuitem create = new Menuitem("Создать");mFile.add(create);
Menuitem open = new Menuitem("Открыть...");
mFile.add(open);
mFile.addfnew Menuitem("-"));
Menu send = new Menu("Отправить");
mFile.add(send);
7. Определение обработчика элементов меню
ActionListener listener = ...;pasteItem.addActionListener(listener);
■ Метод JMenu.add(String), позволяющий добавлять новый пункт в конец меню,
например, следующим образом:
edit.Menu.add("Paste");
edit.Menu.add("Paste");
■ Этот метод возвращает созданный пункт, для которого можно легко задать
обработчик:
JMenuItem pasteItem = editMenu.add("Paste");pasteItem.addActionListener(listener);
8. Определение обработчика элементов меню
■ Часто пункты меню связываются с командами, которые могут активировать другие элементыпользовательского интерфейса, например, кнопки. Следует определить класс, реализующий интерфейс
Action. Обычно для этого класс расширяет AbstractAction. Затем в конструкторе AbstractAction
указывается метка пункта меню и переопределяется метод actionPerformed(), что позволяет
реализовать обработку события, связанного с данным пунктом. Например:
Action exitAction = new AbstractAction("Exit"); // Пункт меню "Exit".
{
public void actionPerformed(ActionEvent event)
{ // Фрагмент программы, обрабатывающий событие.
System.exit(0);
}
};
■ Затем добавляется в меню:
JMenuItem exitItem = fileMenu.add(exitAction);
■ В результате выполнения данного выражения в меню добавляется новый пункт. Объект Action
становится обработчиком. Такой способ заменят следующие строки кода:
JMenuItem exitItem = new JMenuItem(exitAction);
fileMenu.add(exitItem);
9. Всплывающее меню
■ Всплывающее меню (popup menu) появляется обычно при нажатии илиотпускании правой или средней кнопки мыши и является контекстным меню. Его
команды зависят от компонента, на котором была нажата кнопка мыши. В языке
Java всплывающее меню — объект класса PopupMenu. Этот класс расширяет
класс Menu, следовательно, наследует все свойства меню и пункта меню
Menultem.
■ Всплывающее меню присоединяется не к строке меню типа MenuBar или к
меню типа Menu в качестве подменю, а к определенному компоненту. Для этого
в классе component есть метод add(PopupMenu menu).
■ У некоторых компонентов, например TextFieid и TextArea, уже существует
всплывающее меню. Подобные меню нельзя переопределить.
■ Присоединить всплывающее меню можно только к одному компоненту. Если
надо использовать всплывающее меню с несколькими компонентами в
контейнере, то его присоединяют к контейнеру, а нужный компонент определяют
с помощью метода getcomponent () класса MouseEvent.
10. Всплывающее меню
■ В классе PopupMenu есть метод show (Component comp, int x, int у),показывающий всплывающее меню на экране так, что его левый верхний угол
располагается в точке (х, у) в системе координат компонента comp. Чаще всего
это компонент, на котором нажата кнопка мыши, возвращаемый методом
getcomponent().
■ Компонент comp должен быть внутри контейнера, к которому присоединено
меню, иначе возникнет исключительная ситуация.
11. Панель инструментов
public class ToolbarFrame3 extends Frame {JButton cutButton, copyButton, pasteButton;
JButton javaButton, macButton, motifButton, winButton;
public ToolbarFrame3() {
super("Toolbar Example (Swing no text)");
setSize(450, 250);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
12. Панель инструментов
// JPanel works much like Panel does, so we'll use itJPanel toolbar = new JPanel();
toolbar.setLayout(new FlowLayout(FlowLayout.LEFT));
CCPHandler handler = new CCPHandler();
cutButton = new JButton(new ImageIcon("cut.gif"));
cutButton.setActionCommand(CCPHandler.CUT);
cutButton.addActionListener(handler);
toolbar.add(cutButton);
copyButton = new JButton(new ImageIcon("copy.gif"));
copyButton.setActionCommand(CCPHandler.COPY);
copyButton.addActionListener(handler);
toolbar.add(copyButton);
13. Панель инструментов
pasteButton = new JButton(new ImageIcon("paste.gif"));pasteButton.setActionCommand(CCPHandler.PASTE);
pasteButton.addActionListener(handler);
toolbar.add(pasteButton);
add(toolbar, BorderLayout.NORTH);
// Add the look-and-feel controls
JPanel lnfPanel = new JPanel();
LnFListener lnfListener = new LnFListener(this);
macButton = new JButton("Mac");
macButton.addActionListener(lnfListener);
lnfPanel.add(macButton);
14. Панель инструментов
javaButton = new JButton("Metal");javaButton.addActionListener(lnfListener);
lnfPanel.add(javaButton);
motifButton = new JButton("Motif");
motifButton.addActionListener(lnfListener);
lnfPanel.add(motifButton);
winButton = new JButton("Windows");
winButton.addActionListener(lnfListener);
lnfPanel.add(winButton);
add(lnfPanel, BorderLayout.SOUTH);
}
15. Панель инструментов
public static void main(String args[]) {ToolbarFrame3 tf3 = new ToolbarFrame3();
tf3.setVisible(true);
}
}