Menu v Javě
Z MiS
(Rozdíly mezi verzemi)
m (Přidána kategorie Java) |
(Oprava struktury, doplnění) |
||
Řádka 1: | Řádka 1: | ||
− | [[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]] | + | [[Category:VSE]][[Category:Informatika]][[Category:Programování]][[Category:Java]][[Category:GUI]] |
− | |||
− | |||
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 10: | Řá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 75: | Řá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));