swing:menus

Differences

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

Link to this comparison view

Next revision
Previous revision
swing:menus [2015/05/05 13:09]
gthanos created
swing:menus [2016/02/26 11:15] (current)
Line 1: Line 1:
 ====== Menus & Menu Items ====== ====== 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.1430831341.txt.gz · Last modified: 2016/02/26 11:15 (external edit)