2010-12-14 13 views
7

मेरे पास एक मेनू है जिसे मैंने जेमेनू का उपयोग करके बनाया है। मैं इस मेनू में शॉर्टकट कुंजी Alt-F असाइन करना चाहता हूं। मैंने ऐसा करने के लिए सेटमेनोमिक ('एफ') का उपयोग किया, लेकिन मेनू स्नेही नहीं पहचानता है।जावा स्विंग जेमेनू निमोनिक

इस समस्या का निवारण या डीबग करने का सबसे अच्छा तरीका क्या है? मुझे लगता है कि ब्रेक पॉइंट सेट करने से ज्यादा मदद नहीं मिलती है।

धन्यवाद।

कोड स्निपेट:

//higher up in variable declaration 
/** Menus on the menu bar */ 
private JMenu uiFindMnu   = new JMenu("Find"); 
... 
//inside the constructor 
// set mnemonic for the Find menu 
uiFindMnu.setMnemonic('F'); 
+0

मुझे लगता है कि हम कुछ कोड देखने की जरूरत करने जा रहे हैं प्रकाशित किया गया था। –

+0

कोई भी इस सवाल को क्यों उठाएगा? यह मूल सामान है। सभी पोस्टर को काम करना है उदाहरण के लिए "मेनू का उपयोग कैसे करें" पर स्विंग ट्यूटोरियल के लिए एक लिंक खोजने के लिए जेमेनू एपीआई को पढ़ना है। लोगों को आलसी होने के लिए इनाम क्यों देते हैं? इतना ही नहीं कि एसएससीसीई के बिना हम समय अनुमान लगा रहे हैं कि पोस्टर ने क्या गलत किया होगा, इसलिए सवाल भी एक पूरा सवाल नहीं है। – camickr

+1

मैंने पाया कि जेमेनू निमोनिक व्यवहार अलग-अलग बटन से तुलनात्मक रूप से व्यवहार करता है। जब मैं निमोनिक का उपयोग करके एक बटन पर क्लिक करना चाहता हूं, तो मैं शॉर्ट कट लेटर द्वारा Alt Follow को आसानी से दबा सकता हूं। जेमेनू के साथ, मुझे यह करना होगा: Alt बटन दबाएं, पहले मेनू को हाइटलाइट करने के लिए स्विंग के लिए प्रतीक्षा करें, मेनू का चयन करने के लिए अन्य मेनू चुनने के लिए तीर कुंजी का उपयोग करें या संबंधित शॉर्टकट वर्णमाला दबाएं। – zfranciscus

उत्तर

1

उपयोग setMnemonic(KeyEvent.VK_F);

मैं सुझाव है कि आप JMenus के बारे में इस पढ़ने के लिए:

मेनू का समर्थन: Howto use Menus

यहाँ इस लेख के एक उद्धरण है दो प्रकार के कीबोर्ड विकल्प: निमोनिक्स और त्वरक। मनोनीत कार्यक्रमों की पहुंच बढ़ाने के लिए, मेनू पदानुक्रम नेविगेट करने के लिए कीबोर्ड का उपयोग करने का एक तरीका प्रदान करता है। दूसरी ओर, त्वरक, मेनू पदानुक्रम नेविगेट करने के लिए बाईपास करने के लिए कीबोर्ड शॉर्टकट प्रदान करते हैं। सभी उपयोगकर्ताओं के लिए निमोनिक्स हैं; त्वरक बिजली उपयोगकर्ताओं के लिए हैं।

एक निमोनिक एक कुंजी है जो पहले से दिखाई देने वाली मेनू आइटम को चुना जा सकता है। उदाहरण के लिए, मेनू मेनू में पहले मेनू में निमोनिक ए है, और इसकी दूसरी मेनू आइटम में निमोनिक बी है। इसका मतलब यह है कि, जब आप चलाते हैं तो मेनू के साथ मेनूडेमो दिखता है और महसूस करता है, Alt और A कुंजी दबाकर बनाता है पहला मेनू प्रकट होता है। जबकि पहला मेनू दिखाई देता है, दबाकर बी कुंजी (Alt के साथ या बिना) दूसरे मेनू आइटम को चुना जाता है। एक मेनू आइटम आम तौर पर स्नैपशॉट शो के बाद के रूप में मेनू आइटम के टेक्स्ट में स्नेही चरित्र की पहली घटना को रेखांकित करके अपने स्नेही प्रदर्शित करता है। बी इस मेनू के लिए निमोनिक चरित्र है आइटम

आप मेन्यू आइटम या सेटमैनोमिक विधि के साथ या तो एक स्मारक निर्दिष्ट कर सकते हैं। यहाँ स्मृति सहायकों और त्वरक की स्थापना के उदाहरण हैं:

//Setting the mnemonic when constructing a menu item: 
menuItem = new JMenuItem("A text-only menu item", 
         KeyEvent.VK_T); 

//Setting the mnemonic after creation time: 
menuItem.setMnemonic(KeyEvent.VK_T); 

आप देख सकते हैं, तो आप को निर्दिष्ट KeyEvent निरंतर कुंजी करने के लिए इसी उपयोगकर्ता चाहिए प्रेस द्वारा एक स्मरक निर्धारित किया है।

+0

यह आज़माएगा और मैं सभी को परिणाम – zfranciscus

+0

@zfranciscus को एक लिंक के साथ संपादित कर दूंगा जो आपको जेमेनस के बारे में जानने के लिए आवश्यक सब कुछ बताता है :) – LaGrandMere

5

एक वर्ग निर्माता (JFrame का विस्तार) के अंदर:

JMenu helpmenu = new JMenu("File"); 
helpmenu.setMnemonic('F'); 
JMenuBar menubar = new JMenuBar(); 
menubar.add(helpmenu); 
setJMenuBar(menubar); 

वह मेरे लिए ठीक काम किया। मुझे बेहतर उत्तर देने के लिए आपको अपने कोड के बारे में कुछ और विवरण देना होगा। जहां तक ​​SWING या किसी भी अनुप्रयोग GUI की समस्या निवारण है, मैं सबसे अच्छी संभव परिदृश्य बनाने के लिए सबसे अच्छी सिफारिशों में से एक है। मैं एक नंगे हड्डियों जेएफआरएएम टेम्पलेट को चारों ओर रखता हूं कि मैं इस तरह के सरल कोड को परीक्षण के लिए अंदर फेंक सकता हूं। एक बार जब आप जानते हैं कि यह सबसे सरल परिदृश्य में काम करता है तो आप अपनी परियोजना पर वापस जा सकते हैं और पता लगा सकते हैं कि आपके जीयूआई का दूसरा भाग इस कार्यक्षमता के साथ संघर्ष कर रहा है।

जिज्ञासा से बाहर, आपके पास अपने कन्स्ट्रक्टर में 'uiFindMnu' नामक स्थानीय चर नहीं होता है जो आपके वर्ग चर को छुपा रहा है, है ना? मैं यह सुनिश्चित करने के लिए दोबारा जांच करूंगा कि आप जिस चर को सेट कर रहे हैं वह सेटमोनिक() चालू है जो आपके मेनूबार (और वास्तव में प्रदर्शित) में जोड़ा गया है।

+0

धन्यवाद यह वास्तव में उपयोगी है – zfranciscus

+0

अच्छा जवाब, लेकिन यह नहीं है [ एक अच्छा विचार] (http://stackoverflow.com/q/1143923/439793) "जेएफआरएएम का विस्तार (आईएनजी)" –

2

इसी तरह की समस्या के साथ सूफर्ड और महसूस किया कि की सेटिंग के कारण घटकों को शुरू करने के बाद देखें और महसूस करें। बयान फिसल गया और यह काम किया।

एक ब्लॉग पोस्ट here

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