Menu v Javě
Z MiS
				
				
				(Rozdíly mezi verzemi)
				
																
				
				
								
				|  (Nástin obsahu stránky) |  (Oprava struktury, doplnění) | ||
| (Nejsou zobrazeny 2 mezilehlé verze od 1 uživatele.) | |||
| Řádka 1: | Řádka 1: | ||
| − | [[Category:VSE]] | + | [[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]][[Category:GUI]] | 
| − | [[Category:Informatika]] | + | |
| − | [[Category:Programování]] | + | |
| − | |||
| − | |||
| Více informací viz [http://download.oracle.com/javase/tutorial/uiswing/components/menu.html Tutoriály Oracle > Menu]. | Více informací viz [http://download.oracle.com/javase/tutorial/uiswing/components/menu.html Tutoriály Oracle > Menu]. | ||
| Řádka 12: | Řádka 8: | ||
| − | + | == Třída <code>javax.swing.JMenuBar</code> == | |
| * Vytváří v okně pruh (panel), na kterém bude zobrazeno hlavní menu. | * Vytváří v okně pruh (panel), na kterém bude zobrazeno hlavní menu. | ||
| − | * Do tohoto pruhu přidáváme jednotlivé položky hlavního menu. | + | * Menu přiřazujeme oknu metodou <code>setJMenuBar(...)</code>. | 
| + | * Oknu můžeme přiřadit jen jedno hlavní menu. | ||
| + | * Do tohoto pruhu přidáváme jednotlivé položky hlavního menu (viz dále). | ||
| <code> | <code> | ||
|   menuBar = new JMenuBar();   |   menuBar = new JMenuBar();   | ||
| − | + |   ''okno''.setJMenuBar(menuBar);   | |
| </code> | </code> | ||
| + | <div class="Poznamka">Vytváření menu a jeho přiřazení k oknu se obvykle provádí v metodě <code>initComponets()</code></div> | ||
| − | |||
| − | |||
| − | < | + | == Třída JMenu == | 
| + | * Reprezentuje jednu rozbalovací položku. | ||
| + | * Přiřazujeme ji instanci třídy <tt>JMenuBar</tt>. | ||
| + | * Metodou <tt>setMnemonic(...)</tt> můžeme přiřadit akční klávesu. | ||
| + | |||
|   menu = new JMenu("A Menu");   |   menu = new JMenu("A Menu");   | ||
|   menu.setMnemonic(KeyEvent.VK_A);   |   menu.setMnemonic(KeyEvent.VK_A);   | ||
| − |   menu.getAccessibleContext().setAccessibleDescription(" | + |   menu.getAccessibleContext().setAccessibleDescription("Textová popiska menu");   | 
|   menuBar.add(menu);    |   menuBar.add(menu);    | ||
| − | |||
| − | Dílčí vnořená menu se vytvářejí stejně: | + | ; Vnořená menu | 
| − | + | * Dílčí vnořená menu se vytvářejí stejně: | |
|   submenu = new JMenu("A submenu");   |   submenu = new JMenu("A submenu");   | ||
|   menu.add(submenu);   |   menu.add(submenu);   | ||
| − | |||
| − | + | == Třída <code>javax.swing.JMenuItem</code> == | |
| − | + | * Reprezentuje jednu zvolitelnou položku v menu. | |
| − | + | * Lze vkládat i položky s obrázky atd. | |
| − | + |  menuItem = new JMenuItem("A menu item");   | |
| − | + | * Položky vkládáme postupně metodou <tt>add(...)</tt>. Pořadí odpovídá pořadí položek v menu. | |
| − | + |  menu.add(menuItem); | |
| − | + | * Mezi položky můžeme vložit oddělovací čáru: | |
| + |  menu.addSeparator();   | ||
| + | === Speciální položky === | ||
| + | * <code>JRadioButtonMenuItem</code> | ||
| + | * <code>JCheckBoxMenuItem</code> | ||
| + | * <code>JPopupMenu</code> | ||
| + | * Jejich události se zpracovávají stejně jako u odpovídajících prvků GUI. | ||
| === Ošetření událostí === | === Ošetření událostí === | ||
| − | + | * Položky menu se chovají jako stejně jako tlačítka. | |
| − | + | * Lze jim tedy přiřadit <tt>ActionListener</tt> a generují události <tt>ActionEvent</tt>. | |
| − | + |  ActionEvent | |
| − | + |  menuItem.addActionListener(this);   | |
| + | === Rozšíření === | ||
| − | |||
| − | |||
| ; Mnemonics — navigace v menu pomocí kláves | ; Mnemonics — navigace v menu pomocí kláves | ||
| − | + | * Nastavujeme samostatnou metodou: | |
|   menuItem.setMnemonic(KeyEvent.VK_T);    |   menuItem.setMnemonic(KeyEvent.VK_T);    | ||
| − | |||
| − | Nebo kratší: | + | * Nebo kratší zápis pomocí parametrů konstruktoru: | 
| − | + | ||
|   menuItem = new JMenuItem("A menu item", KeyEvent.VK_T);   |   menuItem = new JMenuItem("A menu item", KeyEvent.VK_T);   | ||
| − | |||
| Řádka 77: | Řádka 78: | ||
| * obejdou nutnost navigace skrz menu | * obejdou nutnost navigace skrz menu | ||
| * často využívají třídu <code>KeyStroke</code> — kombinuje klávesu a modifikátor (Alt, Ctrl,...) | * často využívají třídu <code>KeyStroke</code> — kombinuje klávesu a modifikátor (Alt, Ctrl,...) | ||
| − | + |   menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, ActionEvent.ALT_MASK)); | |
| − | + | ||
| − |   menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, ActionEvent.ALT_MASK));   | + | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
Aktuální verze z 6. 6. 2014, 11:53
Více informací viz Tutoriály Oracle > Menu.
| Obsah | 
  Třída javax.swing.JMenuBar 
- Vytváří v okně pruh (panel), na kterém bude zobrazeno hlavní menu.
-  Menu přiřazujeme oknu metodou setJMenuBar(...).
- Oknu můžeme přiřadit jen jedno hlavní menu.
- Do tohoto pruhu přidáváme jednotlivé položky hlavního menu (viz dále).
menuBar = new JMenuBar(); okno.setJMenuBar(menuBar);
Vytváření menu a jeho přiřazení k oknu se obvykle provádí v metodě 
initComponets()
Třída JMenu
- Reprezentuje jednu rozbalovací položku.
- Přiřazujeme ji instanci třídy JMenuBar.
- Metodou setMnemonic(...) můžeme přiřadit akční klávesu.
menu = new JMenu("A Menu"); 
menu.setMnemonic(KeyEvent.VK_A); 
menu.getAccessibleContext().setAccessibleDescription("Textová popiska menu"); 
menuBar.add(menu);
- Vnořená menu
- Dílčí vnořená menu se vytvářejí stejně:
submenu = new JMenu("A submenu"); 
menu.add(submenu); 
  Třída javax.swing.JMenuItem 
- Reprezentuje jednu zvolitelnou položku v menu.
- Lze vkládat i položky s obrázky atd.
menuItem = new JMenuItem("A menu item"); 
- Položky vkládáme postupně metodou add(...). Pořadí odpovídá pořadí položek v menu.
menu.add(menuItem);
- Mezi položky můžeme vložit oddělovací čáru:
menu.addSeparator();
Speciální položky
-  JRadioButtonMenuItem
-  JCheckBoxMenuItem
-  JPopupMenu
- Jejich události se zpracovávají stejně jako u odpovídajících prvků GUI.
Ošetření událostí
- Položky menu se chovají jako stejně jako tlačítka.
- Lze jim tedy přiřadit ActionListener a generují události ActionEvent.
ActionEvent menuItem.addActionListener(this);
Rozšíření
- Mnemonics — navigace v menu pomocí kláves
- Nastavujeme samostatnou metodou:
menuItem.setMnemonic(KeyEvent.VK_T);
- Nebo kratší zápis pomocí parametrů konstruktoru:
menuItem = new JMenuItem("A menu item", KeyEvent.VK_T); 
- Accelerators — klávesové zkratky
- někdy také označovány jako „shortcuts“
- obejdou nutnost navigace skrz menu
-  často využívají třídu KeyStroke— kombinuje klávesu a modifikátor (Alt, Ctrl,...)
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, ActionEvent.ALT_MASK));
