swing:menus

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

swing:menus [2015/05/05 13:46]
gthanos
swing:menus [2016/02/26 11:15]
Line 1: Line 1:
-====== 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. 
- 
-<code java MenuDemo.java>​ 
-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);​ 
-    } 
-  } 
-} 
-</​code>​ 
- 
-Παρακάτω δίνεται ένα άλλο παράδειγμα κώδικα όπου έχουμε Menu μέσα σε Menu.  
- 
-<code java SubmenuEx.java>​ 
-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);​ 
-      } 
-    }); 
-  } 
-} 
-</​code>​ 
  
swing/menus.txt · Last modified: 2016/02/26 11:15 (external edit)