2012-11-13 16 views
15

इसलिए मैंने देखा कि MenuItemCTRL + (कुछ कुंजी) शॉर्टकट जोड़ने के लिए कन्स्ट्रक्टर है, लेकिन JMenuItem के लिए ऐसा कोई कन्स्ट्रक्टर नहीं है। ऐसा करने का सही तरीका क्या है?आप मेनू आइटम (JMenuItem) शॉर्टकट कैसे बनाते हैं?

MenuItem mi = new MenuItem("Copy", new MenuShortcut(KeyEvent.VK_C)); 

लेकिन के लिए घुमाओ:

मैं AWT के बराबर की जरूरत है।

+1

समस्या नहीं पहुंचा जा सकता है। –

+0

[ट्रेल्स से अधिक जानकारी] (http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html#mnemonic) – Brian

उत्तर

28

सीटीआरएल + एन के लिए उदाहरण।

menuItem.setAccelerator(KeyStroke.getKeyStroke('N', Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); 

Toolkit.getDefaultToolkit().getMenuShortcutKeyMask() रिटर्न मैक ओएस पर विंडोज और लिनक्स, और कमांड कुंजी (⌘) पर कुंजी (Ctrl) नियंत्रित करते हैं।

+0

+1 छोटा और मीठा –

+0

बस जो मैं खोज रहा था! धन्यवाद –

+0

आपका स्वागत है। –

8

बस एक KeyStroke बना सकते हैं और इसलिए तरह JMenuItem पर setAccelerator(...) फोन:

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.awt.event.InputEvent; 
import java.awt.event.KeyEvent; 
import javax.swing.JFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.KeyStroke; 
import javax.swing.SwingUtilities; 
import java.awt.Toolkit; 

public class Test { 

    public Test() { 
     initComponents(); 
    } 

    public static void main(String[] args) { 
     //create Swing components on EDT 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new Test(); 
      } 
     }); 
    } 

    private void initComponents() { 
     //create JFrame 
     JFrame frame = new JFrame("Accelerator Sample"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JMenuBar menuBar = new JMenuBar();//create menu bar to hold menus 
     JMenu menu = new JMenu("File");//create a menu 
     menuBar.add(menu);//add menu to bar 

     JMenuItem menuItem = new JMenuItem("Say Hello");//create menu item 

     //set shortcut CTRL+H (command+h on mac os) 
     KeyStroke ctrlH = KeyStroke.getKeyStroke(KeyEvent.VK_H, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()); 

     //set the accelerator 
     menuItem.setAccelerator(ctrlH); 
     //add listener which will be called when shortcut is pressed 
     menuItem.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent actionEvent) { 
       System.out.println("Hello, World"); 
      } 
     }); 

     menu.add(menuItem);//add item to menu 'File' 

     frame.setJMenuBar(menuBar);//set menubar of JFrame 
     frame.pack(); 
     frame.setVisible(true);//set frame visible 
    } 
} 
+1

पूरी बात देखने के लिए अच्छा लगा। समय लेने के लिए शुक्रिया :)। –

+0

@AdrianHristov मदद से खुश होने के लिए खुशी हुई है –

+0

मुझे 'जेपीओयूएमईएम' में 'जेमेनूइटम' पर इसका उपयोग करते समय कोई समस्या नहीं है जब तक कि मैं 'जेपीओपअपमेनू' पर दबाता हूं और विकल्प ड्रॉपडाउन प्रकट होता है और फिर इसके दौरान दिखाया गया है कि यह काम करेगा, मैं शॉर्टकट काम कैसे कर सकता हूं बिना परिदृश्य को दिखाने और दिखाने के लिए मैं 'rootPane.registerKeyboardAction (' यह भी संभव है – shareef

संबंधित मुद्दे