Menu v Javě

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
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]]
  
  
  
 
== Hlavní menu ==
 
  
 
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> ===
+
== 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();  
  frame.setJMenuBar(menuBar);  
+
  ''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 položku v hlavním menu
 
  
<code>
+
== 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("The only menu in this program that has menu items");  
+
  menu.getAccessibleContext().setAccessibleDescription("Textová popiska menu");  
  
 
  menuBar.add(menu);   
 
  menuBar.add(menu);   
</code>
 
  
Dílčí vnořená menu se vytvářejí stejně:
+
; Vnořená menu
<code>
+
* 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);  
</code>
 
  
  
  
=== Třída <code>javax.swing.JMenuItem</code> ===
+
== Třída <code>javax.swing.JMenuItem</code> ==
            menuItem = new JMenuItem("A menu item");  
+
* Reprezentuje jednu zvolitelnou položku v menu.
            Lze i s obrázky atd.
+
* Lze vkládat i položky s obrázky atd.
            Navigace pomocí klávesnice <#ID_1369570315>
+
menuItem = new JMenuItem("A menu item");  
            menu.add(menuItem);
+
* Položky vkládáme postupně metodou <tt>add(...)</tt>. Pořadí odpovídá pořadí položek v menu.
            menu.addSeparator();  
+
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í ===
        ActionEvent
+
* Položky menu se chovají jako stejně jako tlačítka.
        menuItem.addActionListener(this);  
+
* Lze jim tedy přiřadit <tt>ActionListener</tt> a generují události <tt>ActionEvent</tt>.
        Další
+
ActionEvent
            radio a checkboxy jako u odpovídajících prvků mimo menu
+
menuItem.addActionListener(this);  
  
 +
=== Rozšíření ===
  
 
=== Rozšíření ===
 
 
; Mnemonics &mdash; navigace v menu pomocí kláves
 
; Mnemonics &mdash; navigace v menu pomocí kláves
  
<code>
+
* Nastavujeme samostatnou metodou:
 
  menuItem.setMnemonic(KeyEvent.VK_T);   
 
  menuItem.setMnemonic(KeyEvent.VK_T);   
</code>
 
  
Nebo kratší:
+
* Nebo kratší zápis pomocí parametrů konstruktoru:
<code>
+
 
  menuItem = new JMenuItem("A menu item", KeyEvent.VK_T);  
 
  menuItem = new JMenuItem("A menu item", KeyEvent.VK_T);  
</code>
 
  
  
Řádka 75: Řádka 78:
 
* obejdou nutnost navigace skrz menu
 
* obejdou nutnost navigace skrz menu
 
* často využívají třídu <code>KeyStroke</code> &mdash; kombinuje klávesu a modifikátor (Alt, Ctrl,...)
 
* často využívají třídu <code>KeyStroke</code> &mdash; kombinuje klávesu a modifikátor (Alt, Ctrl,...)
 
+
  menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, ActionEvent.ALT_MASK));
<code>
+
  menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, ActionEvent.ALT_MASK));  
+
</code>
+
 
+
 
+
=== Další třídy ===
+
* <code>JRadioButtonMenuItem</code>
+
* <code>JCheckBoxMenuItem</code>
+
* <code>JPopupMenu</code>
+
 
+
 
+
 
+
 
+
 
+
== Tabulky ==
+

Aktuální verze z 6. 6. 2014, 11:53



Více informací viz Tutoriály Oracle > Menu.


Obsah

Třída javax.swing.JMenuBar

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

menu = new JMenu("A Menu"); 
menu.setMnemonic(KeyEvent.VK_A); 
menu.getAccessibleContext().setAccessibleDescription("Textová popiska menu"); 
menuBar.add(menu);  
Vnořená menu
submenu = new JMenu("A submenu"); 
menu.add(submenu); 


Třída javax.swing.JMenuItem

menuItem = new JMenuItem("A menu item"); 
menu.add(menuItem);
menu.addSeparator(); 

Speciální položky

Ošetření událostí

ActionEvent
menuItem.addActionListener(this); 

Rozšíření

Mnemonics — navigace v menu pomocí kláves
menuItem.setMnemonic(KeyEvent.VK_T);  
menuItem = new JMenuItem("A menu item", KeyEvent.VK_T); 


Accelerators — klávesové zkratky
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, ActionEvent.ALT_MASK));
Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje