मैं 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 के साथ भी काम किया, लेकिन मुझे जो भी पाठ मिले, वे या तो मददगार नहीं थे या समझने में बहुत जटिल थे। बहुत बहुत धन्यवाद!

0
Charlie M 15 मार्च 2017, 05:16

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);
0
Software Engineer 25 मार्च 2017, 22:02
नमस्ते, मैंने आपके सुझाव की कोशिश की लेकिन मैं अभी भी उसी समस्या में भाग रहा हूं। मेरा नया कोड है
 – 
Charlie M
24 मार्च 2017, 04:42
बटन अगला = नया बटन ("अगला"); बटन बैक = नया बटन ("बैक"); कंटेनर पैनल 1 = नया कंटेनर (); कंटेनर पैनल 2 = नया कंटेनर (); // होम फॉर्म होम बनाएं और बनाएं = नया फॉर्म ("होम"); होम.सेटलाउट (नया बॉर्डरलाउट ()); पैनल 1.सेटलाउट (नया बॉर्डरलाउट ()); पैनल2.सेटलाउट (नया बॉर्डरलाउट ()); Home.addComponent(BorderLayout.EAST,panel1); Home.addComponent(BorderLayout.WEST,panel2); पैनल1.addComponent(BorderLayout.EAST, Next); पैनल 2.एडकंपोनेंट (बॉर्डरलाउट। वेस्ट, बैक);
 – 
Charlie M
24 मार्च 2017, 04:42
मैंने आपके लिए अपने उत्तर में कुछ और नमूना कोड जोड़े हैं
 – 
Software Engineer
25 मार्च 2017, 22:02