User Tools

Site Tools


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] – created gthanosswing:menus [Unknown date] (current) – external edit (Unknown date) 127.0.0.1
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 δεν μπορούν να έχουν κάποιο ActionListener, αλλά περιέχουν MenuItems που συνδέονται με ActionListeners. 
 +    * **Προσοχή:** Ένα αντικείμενο Menu μπορεί να περιέχει άλλα αντικείμενα Menu (εκτός από MenuItems), δηλ μπορούμε να έχουμε Menu μέσα σε Menu.
 +  * **[[http://docs.oracle.com/javase/7/docs/api/javax/swing/JMenuItem.html|MenuItem]]:** Περιέχει μία καταχώρηση η οποία μπορεί να συνδέεται με ένα //ActionListener//. Αντιστοιχεί σε μία επιλογή από το μενού.
 +
 +Δείτε το παράδειγμα που παρουσιάστηκε [[swing:color|στην ενότητα που αφορά τους χρωματισμούς]] με χρήση 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 =====
 +
 +Παρακάτω δίνεται ένα παράδειγμα όπου έχουμε 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:swing_awt_hierarchy | Swing & AWT Class Hierarchy ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:swing:borders | Borders ]] |
 +
  
swing/menus.1430831341.txt.gz · Last modified: 2015/05/05 12:09 (external edit)