2011-12-14 21 views
6

में फोकस कैसे प्राप्त करें मैं एक अनुभवी जावा प्रोग्रामर हूं, लेकिन एक स्विंग नौसिखिया तो कृपया मेरे साथ सहन करें।जेपीओपअपमेनू

मैं एक जेपीओपअप विन्डो चाहता हूं जिसमें कीबोर्ड फोकस है। मैं तीर कुंजियों का जवाब देना चाहता हूं, बचाना (मेनू बंद करना) और एंटर (आइटम को आमंत्रित करने के लिए)। क्या मुझे मेन्यू में एक KeyListener जोड़ना चाहिए और यह सब स्वयं कोड करें, या क्या कुछ प्रकार का "मोड" है जिसे मैं इस व्यवहार को सक्रिय करने के लिए सेट कर सकता हूं जो ऐसा लगता है कि यह मानक होना चाहिए।

JPopupMenus पर मानक घुमाओ ट्यूटोरियल अनुभाग केवल स्मृति सहायकों और त्वरक की बात करते हैं। मैं विशेष रूप से उनको नहीं चाहता हूं।

हार्ड विश्वास है कि इस पूरी तरह से JPopupMenu के अनाज के खिलाफ है।

कुछ ऐसा करने का सबसे अच्छा तरीका क्या है जिसे मैं कार्यान्वित करना चाहता हूं?

उत्तर

6

एक बार जब आप jpopupMenu.show(Component invoker, int x, int y) कर यह स्वचालित रूप से के रूप में आप चाहते हैं कुंजीपटल का जवाब देंगे। यदि यह तो काम नहीं कर रहा आप यानी कुछ अन्य घटक मेनू से फोकस दूर छीन रहा है कुछ अन्य समस्या का समाधान हो सकता है जब यह होना चाहिए नहीं आदि

+0

हम्म। मैं शो() के बजाय सेट विज़िबल (सत्य) का उपयोग कर रहा था, लेकिन मुझे लगता है कि शो() को सेटविज़िबल()/ –

+0

के पक्ष में बहिष्कृत किया गया है, मैं शो (घटक आवेदक, int x, int y) विधि के बारे में बात कर रहा था जिसका मैंने उपयोग किया है मेरा कोड गड़बड़ी के लिए क्षमा। –

+0

यही जवाब है। मैं एक घटक से ठीक से बंधे नहीं था। ऐसा करने के लिए ट्रैशगोद का जवाब भी आवश्यक था। आप दोनों को धन्यवाद। –

3

के बजाय KeyListener, मैं अपने JPopupMenu को Action उदाहरण जोड़ते सलाह देते हैं। अपने पैनल में पॉपअप जोड़ने के लिए setComponentPopupMenu() का उपयोग करें।

+1

धन्यवाद, आपके इनपुट, एकेजे के ऊपर के साथ, यह काम कर रहा है। –

+0

उत्कृष्ट; संदर्भ के लिए, हाल ही में एक अद्यतन उदाहरण है [यहां] (http://stackoverflow.com/a/5129757/230513)। – trashgod