2010-11-28 10 views

उत्तर

13

आप अपने JPanel के लिए एक BorderLayout का उपयोग करें और

JPanel p = new JPanel(); 
p.setLayout(new BorderLayout()); 
p.add(menubar, BorderLayout.NORTH); 

JMenuBar एक JComponent है और किसी भी अन्य की तरह एक कंटेनर में जोड़ा जा सकता के साथ पैनल के उत्तरी क्षेत्र में JMenuBar डाल सकते हैं JComponent।

+3

मैंने सोचा था कि आप केवल जेएमएनयूएआर को जेएफआरएएम के – Enrique

+0

वर्क्स में जोड़ सकते हैं, मुझे इसे शीर्ष पर जोड़ने की अनुमति नहीं देगी लेकिन पर्याप्त करीब! – Skizit

+0

BorderLayout.PAGE_START इसे मेरे लिए शीर्ष पर रखना प्रतीत होता था। –

4

जेमेनूबार सेट जेमेनूबार विधि का उपयोग कर जेएफआरएएम पर सेट हैं।

उनका उपयोग कैसे करें इस पर निम्नलिखित ट्यूटोरियल देखें।

http://download.oracle.com/javase/tutorial/uiswing/components/menu.html

+0

उन्हें जेपीनल में सीधे जोड़ना संभव नहीं है? मुझे वहां अन्य सामान मिल गए हैं ... यदि मैं एक जेएफआरएम जोड़ता हूं तो यह मेरे पैनल आइटम पर नहीं खींचता है? – Skizit

+2

ठीक है, एक जेमेनूबार सिर्फ एक और जेकंपोनेंट है, इसलिए आप इसे अपने जेपीनल में जोड़ सकते हैं जैसे आप कुछ और करेंगे। हालांकि, चूंकि इसे जेएफआरएम से जोड़ा जाने के लिए डिज़ाइन किया गया है, यह सही ढंग से काम नहीं कर सकता है (या यहां तक ​​कि बिल्कुल भी!) – Codemwnci

0

मैंने कोशिश की लेकिन JMenuItemJmenu और JmenuBarJPanel में नहीं जोड़ा गया था। लेकिन अगर आप JFrame के लेआउट को शून्य के रूप में घोषित करते हैं तो आपको यह महसूस हो सकता है कि setBounds(x, y, width, height)JMenuBar उदाहरण पर उपयोग करें, फिर मेनू बार को JFrame पर जोड़ें।

+0

-1 एक शून्य लेआउट – kleopatra

0

अपने पैनल पर jDesktopPane डालने का प्रयास करें और फिर उसमें मेनूबार जोड़ें। मैं नीचे दिए गए मेरे उदाहरण में एक टैबड फलक का उपयोग कर रहा हूं, लेकिन इसे पैनल के लिए भी काम करना चाहिए। यद्यपि आप NetBeans (काफी अच्छा) में "अन्य घटक" में JMenuBar जोड़ने के लिए

JDesktopPane desktopPane = new JDesktopPane(); 
    tabbedPane.addTab("New tab", null, desktopPane, null); 

    JMenuBar menuBar_1 = new JMenuBar(); 
    menuBar_1.setBounds(0, 0, 441, 21); 
    desktopPane.add(menuBar_1); 
+0

हम्म का सुझाव देने के लिए ... क्यों एक जेडीस्कटॉपपेन? – kleopatra

+0

मैं एक ऐप बना रहा हूं जहां मैं कई अलग-अलग विंडों के दृश्यों को प्रदर्शित करने के लिए प्रत्येक अलग-अलग टैब में मेन्यूबार रखना चाहता हूं। ऐसा करने के लिए यह एक अच्छा तरीका प्रतीत होता था। प्रत्येक खिड़की के लिए अलग मेनूबार रखने का कोई अन्य तरीका नहीं मिला। – user2248926

0

मैं एक समाधान है,। एक जेपीनल बनाएं और फिर अंदर एक और जेपीनल जोड़ें (इसे बच्चे को कॉल करें) जो पूरे बाहरी जेपीनेल को भरता है। अपने नियंत्रण को बाल पैनल में रखें। फिर जेमेनूबार जोड़ें लेकिन नेटबीन इसे "अन्य घटक" में रखेगा। अपने स्रोत को संपादित करें और ctor में के बाद यह इस समारोह के लिए एक कॉल कॉल "initComponents" जगह:

public static void setJPanelMenuBar(JPanel parent, JPanel child, JMenuBar menuBar) { 
    parent.removeAll(); 
    parent.setLayout(new BorderLayout()); 
    JRootPane root = new JRootPane(); 
    parent.add(root, BorderLayout.CENTER); 
    root.setJMenuBar(menuBar); 
    root.getContentPane().add(child); 
    parent.putClientProperty("root", root); //if you need later 
    } 

उदाहरण के लिए, अपने ctor इस प्रकार दिखाई देंगे:

मेरे लिए
public MyPanel() { 
    initComponents(); 
    setJPanelMenuBar(this, child, myMenuBar); 
    } 

काम करता है। JInternalFrame स्रोत कोड को देखकर विचार प्राप्त हुआ। यह सब बच्चे जेपीनेल को JRootPane() के साथ प्रतिस्थापित करता है और फिर बच्चे को रूट फलक की सामग्री फलक में डाल देता है।

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