मैं IntelliJ के भीतर BorderLayout को लागू करने का प्रयास कर रहा हूं और इसे काम करने में परेशानी हो रही है। यह ठीक संकलित करता है, लेकिन जब यह चलता है तो मैं दर्शक को एक सेकंड के लिए देखता हूं और फिर यह दुर्घटनाग्रस्त हो जाता है। मेरे पास वर्तमान में कोड है
Button Next=new Button("Next");
Button Back=new Button("Back");
Container panel1=new Container();
Container panel2=new Container();
home = new Form("Home");
home.setLayout(new BorderLayout());
panel1.setLayout(new BorderLayout());
panel2.setLayout(new BorderLayout());
home.addComponent(BorderLayout.EAST,panel1);
home.addComponent(BorderLayout.WEST,panel2);
panel1.addComponent(Next);
panel2.addComponent(Back);
क्रैश होने के बाद मुझे जो त्रुटि मिलती है वह है "बिना बाधा पैरामीटर के बॉर्डरलाउट कंटेनर में घटक नहीं जोड़ा जा सकता"। मैंने एक बाधा पैरामीटर पर शोध करने की कोशिश की और IntelliJ में BorderLayout के साथ भी काम किया, लेकिन मुझे जो भी पाठ मिले, वे या तो मददगार नहीं थे या समझने में बहुत जटिल थे। बहुत बहुत धन्यवाद!
1 उत्तर
त्रुटि संदेश आपको बता रहा है कि यदि आप एक सीमा लेआउट में एक घटक जोड़ना चाहते हैं तो आपको यह निर्दिष्ट करना होगा कि इसे कहां रखा जाए। आपने इसे घर में घटकों को जोड़ते समय किया है, लेकिन आपने panel1
और panel2
में घटकों को जोड़ते समय ऐसा नहीं किया है। पाने के लिए आपको BorderLayout.EAST
(या WEST
, या जो कुछ भी) जोड़ना होगा:
panel1.addComponent(BorderLayout.EAST, Next);
panel2.addComponent(BorderLayout.WEST, Back);
हालांकि, मुझे लगता है कि आप इसे गलत इस्तेमाल कर रहे हैं। आप शायद पैनल 1 या पैनल 2 में बॉर्डर लेआउट नहीं चाहते हैं - वे डिफ़ॉल्ट प्रवाह लेआउट के साथ ठीक हैं, इसलिए यदि आप panel1/2.setLayout()
लाइनों को हटाते हैं तो आपका कोड ठीक काम करना चाहिए।
BTW: जावा में हम वेरिएबल की शुरुआत में बड़े अक्षरों का उपयोग नहीं करते हैं, इसलिए Next
और Back
next
और back
होने चाहिए। साथ ही, panel1
कुछ इस तरह होना चाहिए nextPanel
, और panel2
कुछ इस तरह होना चाहिए backPanel
।
एक और चीज़ जोड़ने के लिए -- अब कोई भी awt का उपयोग नहीं करता है। हम सब आगे बढ़ चुके हैं (ज्यादातर html5 पर)। तो, इसे जोरों पर आजमाते हुए, आपको मिलेगा:
import javax.swing.*;
...
JButton next = new JButton("Next");
JButton back = new JButton("Back");
JFrame home = new JFrame("Home");
home.setLayout(new BorderLayout());
home.add(back, BorderLayout.WEST);
home.add(next, BorderLayout.EAST);
संबंधित सवाल
नए सवाल
border-layout
BorderLayout एक जावा स्विंग / AWT लेआउट मैनेजर है जो एक कंटेनर को बाहर रखने, व्यवस्थित करने और उसके घटकों को पाँच क्षेत्रों में फिट करने के लिए आकार देता है: उत्तर, दक्षिण, पूर्व, पश्चिम और केंद्र।