फ्रेम में पैनल का निश्चित आकार

मैंने कुछ घटकों को JPanel में जोड़ा है जो ग्रिड लेआउट पर सेट है, और मैं इसे JFrame में जोड़ रहा हूं जो सीमा लेआउट पर सेट है। लेकिन मैं पैनल के आकार को ठीक करना चाहता हूं। जब मेरी खिड़की को अधिकतम किया जाता है, तो सभी घटकों का आकार बढ़ रहा है। मैं खिड़की के केंद्र पर पैनल चाहता हूं, निश्चित आकार यदि विंडो को अधिकतम किया गया हो।

0
जोड़ा संपादित
विचारों: 1
यदि आप कुछ कोड प्रदान करते हैं, तो यह बेहतर होगा। उदाहरण के लिए, मैं यह देखने के लिए आपके कोड में देखूंगा कि आप कहां और कहां कॉल करते हैं setPreferredSize
जोड़ा लेखक Radu Murzea, स्रोत
"कृपया मुझे कुछ कोडिंग के साथ मदद करें" कृपया किसी प्रश्न और प्रयास के किसी भी संकेत में मदद करें। तो कोड कोडिंग मशीन नहीं है। बीटीडब्ल्यू - टेक्स्ट के लिए कोड स्वरूपण का उपयोग न करें, और पूर्वावलोकन प्रारूपों की अपेक्षा के अनुसार पोस्ट प्रारूपों की जांच करें। बंद करने के लिए वोटिंग।
जोड़ा लेखक Andrew Thompson, स्रोत
यदि पैनल में मानव पठनीय पाठ है, यह मत करें ! फ़ॉन्ट मेट्रिक्स मंच से भिन्न होता है।
जोड़ा लेखक trashgod, स्रोत

3 उत्तर

किसी भी बाधा के साथ GridBagLayout के लिए एक घटक के रूप में पैनल को GridLayout के साथ रखें - यह केंद्रित होगा। BorderLayout के CENTER पर GBL के साथ पैनल जोड़ें।

उपर्युक्त छवि के लिए यह उदाहरण देखें।


नेस्टेड लेआउट उदाहरण दाईं ओर स्क्रॉल-फलक के निचले भाग में छवि को केंद्रित करने के लिए GBL का भी उपयोग करता है।

3
जोड़ा
अच्छी तस्वीर और लघु समाधान के लिए +1।
जोड़ा लेखक brimborium, स्रोत

वैसे तो आपको सीमा सीमा का उपयोग नहीं करना चाहिए, क्योंकि यह सिर्फ बच्चों के घटकों को फिट करता है। यदि आप अभी भी जेएफआरएएम पर बोडरलाउट का उपयोग करना चाहते हैं (क्योंकि आपको कुछ साइड पैनल या ऐसा कुछ चाहिए), तो आप बस अपने जेपीनल को लपेट सकते हैं (ग्रिडलाउट के साथ ) एक ग्रिडबैगआउट या बॉक्सलाउट या कुछ समान के साथ एक और जेपीनेल में और फिर उस अन्य जेपीनेल को जेएफआरएएम में डाल दिया।

JPanel innerPanel = new JPanel();
innerPanel.setLayout(new GridLayout());
// fill and set your innerPanel

JPanel middlePanel = new JPanel();
middlePanel.setLayout(new GridBagLayout());
middlePanel.add(innerPanel, constraintsThatPlaceItWhereYouWantIt);

JFrame yourFrame = new JFrame();
yourFrame.setLayout(new BorderLayout());
yourFrame.add(middlePanel, BorderLayout.CENTER);
1
जोड़ा
आप सही हैं, लेकिन पठनीयता की वजह से मैं अभी भी बाधाएं देता हूं। और वह नियुक्ति के संबंध में इसके साथ कुछ और उन्नत सामान कर सकता है।
जोड़ा लेखक brimborium, स्रोत
अंतिम पंक्ति के बारे में: yourFrame.add (middlePanel, BorderLayout.CENTER); ? क्या आप BorderLayout.CENTER को भी छोड़ देंगे? मैं नहीं चाहता हालांकि यह निरंतर नहीं है।
जोड़ा लेखक brimborium, स्रोत
middlePanel.add (आंतरिक पैनेल, बाधाओंप्लेटप्लेस ItWhereYouWantIt); जीबीएल में एक घटक को केंद्रित करने के लिए बाधाओं के लिए यह विकल्प क्यों है IWhereItWantIt अनावश्यक है। यह उदाहरण कोड से जुड़ा हुआ है।
जोड़ा लेखक Andrew Thompson, स्रोत
middlePanel.add (आंतरिक पैनेल/* केंद्र में डाला * /); ;)
जोड़ा लेखक Andrew Thompson, स्रोत
    JFrame frame = new JFrame();
    frame.setSize(500, 500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(new BorderLayout());

    JPanel rootPanel = new JPanel();
    frame.getContentPane().add(rootPanel, BorderLayout.CENTER);
    rootPanel.setLayout(new GridBagLayout());

    JPanel contentPanel = new JPanel();

    Dimension dimension = new Dimension(300, 300);
    contentPanel.setMaximumSize(dimension);
    contentPanel.setMinimumSize(dimension);
    contentPanel.setPreferredSize(dimension);
    contentPanel.setBackground(Color.YELLOW);

    GridBagConstraints g = new GridBagConstraints();
    g.gridx = 0;
    g.gridy = 0;
    g.anchor = GridBagConstraints.CENTER;
    rootPanel.add(contentPanel, g);

    frame.setVisible(true);
0
जोड़ा
कम से कम यह इस मामले में मदद नहीं करेगा।
जोड़ा लेखक brimborium, स्रोत
1) कोड स्वरूपण का प्रयोग करें 2) यह शायद ही कभी, जवाब है। -1
जोड़ा लेखक Andrew Thompson, स्रोत