====== Menus & Menu Items ====== Το μενού ενός παραθύρου αποτελείται από αντικείμενα των τριών παρακάτω κλάσεων. * **[[http://docs.oracle.com/javase/7/docs/api/javax/swing/JMenuBar.html|MenuBar]]:** Αποτελεί την μπάρα του μενού που εμφανίζεται στο πάνω μέρος του παραθύρου. * **[[http://docs.oracle.com/javase/7/docs/api/javax/swing/JMenu.html|Menu]]:** Αποτελεί μία καταχώρηση στην μπάρα. Μία μπάρα μπορεί να έχει πολλά Menus. Τα Menus δεν έχουν κάποιο configurable ActionListener, αλλά περιέχουν MenuItems που περιέχουν ActionListeners. * **Προσοχή:** Ένα αντικείμενο Menu μπορεί να περιέχει άλλα αντικείμενα Menu (εκτός από MenuItems), δηλ μπορούμε να έχουμε Menu μέσα σε Menu. * **[[http://docs.oracle.com/javase/7/docs/api/javax/swing/JMenuItem.html|MenuItem]]:** Περιέχει μία καταχώρηση η οποία μπορεί να έχει κάποιον ActionListener. Αντιστοιχεί σε μία επιλογή του Menu. Δείτε το προηγούμενο παράδειγμα με χρήση Menus αντί για Buttons. import javax.swing.*; import java.awt.*; import java.awt.event.*; public class MenuDemo extends JFrame implements ActionListener { public static final int WIDTH = 400; public static final int HEIGHT = 250; private JPanel redPanel; private JPanel whitePanel; private JPanel bluePanel; public static void main(String args[]) { MenuDemo gui = new MenuDemo(); gui.setVisible(true); } public MenuDemo() { super("Panel Demonstration with Menu Selection"); setSize(WIDTH, HEIGHT); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLayout(new BorderLayout()); JPanel biggerPanel = new JPanel(); biggerPanel.setLayout(new GridLayout(1,3)); redPanel = new JPanel(); redPanel.setBackground(Color.LIGHT_GRAY); biggerPanel.add(redPanel); whitePanel = new JPanel(); whitePanel.setBackground(Color.LIGHT_GRAY); biggerPanel.add(whitePanel); bluePanel = new JPanel(); bluePanel.setBackground(Color.LIGHT_GRAY); biggerPanel.add(bluePanel); add(biggerPanel, BorderLayout.CENTER); JMenu colorMenu = new JMenu("Choose Color"); colorMenu.setBackground(Color.LIGHT_GRAY); colorMenu.setMnemonic(KeyEvent.VK_C); JMenuItem redMenuItem = new JMenuItem("Red"); redMenuItem.setBackground(Color.RED); redMenuItem.addActionListener(this); redMenuItem.setMnemonic(KeyEvent.VK_R); colorMenu.add(redMenuItem); JMenuItem whiteMenuItem = new JMenuItem("White"); whiteMenuItem.setBackground(Color.WHITE); whiteMenuItem.addActionListener(this); whiteMenuItem.setMnemonic(KeyEvent.VK_W); colorMenu.add(whiteMenuItem); JMenuItem blueMenuItem = new JMenuItem("Blue"); blueMenuItem.setBackground(Color.BLUE); blueMenuItem.addActionListener(this); blueMenuItem.setMnemonic(KeyEvent.VK_B); colorMenu.add(blueMenuItem); JMenuBar bar = new JMenuBar(); bar.add(colorMenu); setJMenuBar(bar); } public void actionPerformed(ActionEvent e) { String menuString = e.getActionCommand(); if(menuString.equals("Red") ) { redPanel.setBackground(Color.RED); whitePanel.setBackground(Color.LIGHT_GRAY); bluePanel.setBackground(Color.LIGHT_GRAY); } else if(menuString.equals("White") ) { redPanel.setBackground(Color.LIGHT_GRAY); whitePanel.setBackground(Color.WHITE); bluePanel.setBackground(Color.LIGHT_GRAY); } else if(menuString.equals("Blue") ) { redPanel.setBackground(Color.LIGHT_GRAY); whitePanel.setBackground(Color.LIGHT_GRAY); bluePanel.setBackground(Color.BLUE); } } } Παρακάτω δίνεται ένα άλλο παράδειγμα κώδικα όπου έχουμε Menu μέσα σε Menu. import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; public class SubmenuEx extends JFrame { public SubmenuEx() { initUI(); } private void initUI() { createMenuBar(); setTitle("Submenu"); setSize(360, 250); setLocationRelativeTo(null); setDefaultCloseOperation(EXIT_ON_CLOSE); } private void createMenuBar() { JMenuBar menubar = new JMenuBar(); ImageIcon iconNew = new ImageIcon("icons/new.png"); ImageIcon iconOpen = new ImageIcon("icons/open.png"); ImageIcon iconSave = new ImageIcon("icons/save.png"); ImageIcon iconExit = new ImageIcon("icons/exit.png"); JMenu fileMenu = new JMenu("File"); JMenu impMenu = new JMenu("Import"); JMenuItem newsfMi = new JMenuItem("Import newsfeed list..."); JMenuItem bookmMi = new JMenuItem("Import bookmarks..."); JMenuItem mailMi = new JMenuItem("Import mail..."); impMenu.add(newsfMi); impMenu.add(bookmMi); impMenu.add(mailMi); JMenuItem newMi = new JMenuItem("New", iconNew); JMenuItem openMi = new JMenuItem("Open", iconOpen); JMenuItem saveMi = new JMenuItem("Save", iconSave); JMenuItem exitMi = new JMenuItem("Exit", iconExit); exitMi.setToolTipText("Exit application"); exitMi.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent event) { System.exit(0); } }); fileMenu.add(newMi); fileMenu.add(openMi); fileMenu.add(saveMi); fileMenu.addSeparator(); fileMenu.add(impMenu); fileMenu.addSeparator(); fileMenu.add(exitMi); menubar.add(fileMenu); setJMenuBar(menubar); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { SubmenuEx ex = new SubmenuEx(); ex.setVisible(true); } }); } }