середа, 20 червня 2012 р.

Меню в Java

Стандартне меню в java реалізоване в класі JMenu. Меню може містити інші меню у вигляді підменю. Для того щоб розмістити пункти меню в горизонтальну смугу використовується інший клас JMenuBar.

Рядок меню можна розмістити не тільки зверху вікна, але і знизу і посередині.

Таким чином спочатку створюється рядок меню:

JMenuBar menuBar = new JMenuBar();
Щоб помістити рядок меню у верхню частину фрейму пишеться:
frame.SetJMenuBar(menuBar);
Далі залишається заповнити його відповідними меню. Для цього для кожного меню створюється свій об’єкт:
JMenu fileMenu=new JMenu(“Файл”);
JMenu editMenu=new JMenu(“Редагувати”);
Далі усі основні меню додають до рядка меню:
menuBar.add(fileMenu);
menuBar.add(editMenu);
Аналогічно додємо до меню пункти підменю:
JMenu fileMenu = new JMenu("Файл");
menuBar.add(fileMenu);
JMenuItem openItem = new JMenuItem ("Відкрити");
fileMenu.add(openItem);
Також до пунктів меню можна додати розділювачі:
fileMenu.addSeparator().
До кожного пункту меню можна додати зображення та свій обробник події. Наступна програма демонструє створення меню та роботу з ним. ProgramMenu.java
import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import javax.swing.*;
 
public class ProgramMenu {
         public static final int DEFAULT_WIDTH = 300;
         public static final int DEFAULT_HEIGHT = 200;
 
    public static void main(String[] args) {
        //створюємо фрейм
        JFrame frame = new JFrame();
        frame.setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //додаємо меню
        frame.add(new Menu(frame));
        frame.setVisible(true);
 
 
    }
}
 
class Menu extends JMenuBar{  
    public Menu(JFrame frame ){
       //створюємо рядок меню
       JMenuBar menuBar = new JMenuBar();
       //додаємо рядок меню у фрейм
       frame.setJMenuBar(menuBar);
 
       //Меню "Файл"
       JMenu fileMenu = new JMenu("Файл");
       menuBar.add(fileMenu);
       //додаємо пункти в меню файл
       JMenuItem openItem = new JMenuItem ("Відкрити");
       fileMenu.add(openItem);
       //додаємо розділювач
       fileMenu.addSeparator();
 
 
       JMenuItem saveItem = new JMenuItem ("Зберегти");
       fileMenu.add(saveItem);
 
       //створити меню "закрити" в якому поряд з написом буде зображення
       JMenuItem closeItem = new JMenuItem ("Закрити", new ImageIcon("CloseIcon.jpg"));
       fileMenu.add(closeItem);
       //додаємо обробник подій використавши безіменний внутрішній клас
       closeItem.addActionListener(new ActionListener( ) {
            @Override
            public void actionPerformed(ActionEvent e) { System.exit(0); }
        });
 
 
       // додаємо гарячу клавіші Ctrl-X до пункту "Закрити" 
        closeItem.setMnemonic(KeyEvent.VK_X);
        closeItem.setAccelerator(
                KeyStroke.getKeyStroke(KeyEvent.VK_X, Event.CTRL_MASK));
 
       // меню "Вигляд"
       JMenu viewMenu = new JMenu("Вигляд");
       menuBar.add(viewMenu);
 
       // меню "Допомога"
       JMenu helpMenu = new JMenu("Допомога");
       menuBar.add(helpMenu);
       // можна використати метод add() 
       // для додавання пунктів в меню зразу ж при створенні
       JMenuItem helpItem = helpMenu.add("Довідка");
       JMenuItem aboutItem = helpMenu.add("Про програму");      
    }   
}
Повний варіант книги знаходиться на Вікіпідручнику