मैं एक एप्लिकेशन लिख रहा हूं जो उपयोगकर्ता की जानकारी जैसे नाम, ईमेल, पासवर्ड लेगा। उपयोगकर्ता जानकारी प्राप्त करने के लिए मैं JTextFields का उपयोग कर रहा हूं। मैं स्क्रीन के केंद्र में सभी घटकों को लंबवत और क्षैतिज रूप से रखना चाहता हूं, और घटकों को एक के बाद एक दूसरे के ऊपर ढेर करना चाहता हूं: अपेक्षित डिज़ाइन

जैसा कि आप किसी वेबसाइट पर देखेंगे। वर्तमान में मैं एक JFrame के अंदर एक JPanel का उपयोग कर रहा हूँ, JPanel में BoxLayout के साथ BoxLayout है।Y_AXIS। यहाँ मेरा कोड है:

public class RegisterLayout extends Layout {

    @Override
    public void init() {
        this.setBackground(Utilities.babyBlueish);
        this.setBorder(BorderFactory.createTitledBorder("Register Now!"));
        this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
    }

    @Override
    public void addComponents() {
        
        JTextField fName = new JTextField("Enter Your Full Name");
        fName = Utilities.designTextField(fName);
        
        JButton submit = new JButton("Submit");
        submit = Utilities.designButton(submit);
        submit.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                
            }
            
        });
        
        this.add(fName);
        this.add(submit);
    }

}

जब JPanel को JFrame के सामग्री फलक में जोड़ा जाता है, तो init () और addComponents () दोनों को कॉल किया जाता है। "रजिस्टरलाउट लेआउट बढ़ाता है" और "लेआउट जेपीनल बढ़ाता है"। वर्तमान में कोड के साथ मेरा प्रोग्राम इस तरह दिखता है: वर्तमान डिजाइन। जैसा कि आप देख सकते हैं JTextField क्षैतिज रूप से स्क्रीन के साथ केंद्र से बाहर है और समग्र रूप से यह लंबवत रूप से केंद्रित नहीं है।

अगर कोई मदद कर सकता है तो मैं इसकी सराहना करूंगा। अगर आपको और विवरण चाहिए तो कृपया मुझे बताएं।

2
IssiahB 27 नवम्बर 2020, 08:56

1 उत्तर

सबसे बढ़िया उत्तर

इस लेआउट को कोडित करने के कई तरीके हैं। ये एक तरीका है।

GUI के अनुभागों को तार्किक इकाइयों, 'पाठ फ़ील्ड का एक स्तंभ', 'फ़ॉर्म नियंत्रण के लिए एक क्षेत्र' आदि में विभाजित करें, फिर प्रत्येक के लिए एक उपयुक्त लेआउट के साथ एक कंटेनर प्रदान करें।

enter image description here

इस GUI मॉक-अप में:

  • बैंगनी क्षेत्र में एक सीमा लेआउट होता है, जिसमें दो हरे क्षेत्र केंद्र और पृष्ठ अंत बाधाओं में दिखाई देते हैं।
  • शीर्ष पर पहला हरा क्षेत्र एक ग्रिड बैग लेआउट होगा, जो केंद्र में (क्षैतिज और लंबवत) ..
  • नारंगी रंग में बॉर्डर वाले टेक्स्ट फ़ील्ड का सिंगल कॉलम ग्रिड लेआउट।
  • दूसरा हरा बॉर्डर वाला क्षेत्र एक और ग्रिड बैग लेआउट हो सकता है, या यदि केवल क्षैतिज केंद्र की आवश्यकता होती है, तो एक प्रवाह लेआउट।

सफेद जगह के लिए कंटेनरों पर उपयुक्त बॉर्डर (जैसे एक खाली बॉर्डर, जो अदृश्य है) लगाया जा सकता है।

1
Andrew Thompson 27 नवम्बर 2020, 06:35