swing:menus

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Previous revision
swing:menus [2018/03/27 21:25]
gthanos
swing:menus [2018/04/13 10:21]
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:swing_awt_hierarchy | Swing & AWT Class Hierarchy ]] | [[:toc | Περιεχόμενα ]] | Επόμενο: [[:swing:borders | Borders ]] | 
- 
  
swing/menus.txt · Last modified: 2018/04/13 10:21 (external edit)