/ / ग्रिडबैगआउट लेबल संरेखित - जावा

GridBagLayout लेबल संरेखित - जावा

मैं ग्रिडबैगलाउट के साथ गड़बड़ कर रहा हूं और मुझे कुछ परेशानी हो रही है। सबसे पहले मैं लेबल को ऊपरी बाएं में शुरू करने की कोशिश कर रहा था जिसे मैंने पूरा किया था:

    JPanel right = new JPanel(new GridBagLayout());
right.setPreferredSize(new Dimension(333,600));

GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.NORTHWEST;

JLabel testLabel = new JLabel();
testLabel.setText("Test");
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weighty = 1;
gbc.weightx = 1;
right.add(testLabel, gbc);

अब मैं इस के तहत सीधे एक और लेबल जोड़ना चाहता हूं:

    JLabel test2Label = new JLabel();
test2Label.setText("test2");
gbc.gridx = 0;
gbc.gridy = 1;
gbc.weighty = 1;
gbc.weightx = 1;
right.add(test2Label, gbc);

इसे सीधे पहले के नीचे डालने के बजायएक यह पैनल के नीचे आधा रास्ते रखता है। यह वज़न और भारोत्तोलन के कारण मुझे लगता है, लेकिन अगर मैं इन्हें बदलता हूं तो यह ऊपरी बाईं ओर लेबल नहीं रखेगा। मैं इसे कैसे कारगर बना सकता हूं? क्षमा करें अगर यह अस्पष्ट अंग्रेजी है मेरी सबसे अच्छी भाषा नहीं है तो मुझे बताएं कि आपको स्पष्टीकरण देने की आवश्यकता है या नहीं। -धन्यवाद

उत्तर:

जवाब के लिए 0 № 1

यदि कोड के बाद, मैं आपको सही ढंग से समझ गयाजवाब होना चाहिए। वेटेक्स और वेटी तय करते हैं कि किसी घटक में अपने बच्चे के घटकों को मुक्त स्थान कैसे वितरित करना है - बड़ा मूल्य, अधिक स्थान (यहां और पढ़ें: जावा ग्रिडबैगआउट में वेटेक्स और वेटी) लेकिन यदि आपने मूल्य घटकों के साथ सभी घटकों को छोड़ दिया है, तो वे सभी केंद्रित होंगे।

तो आपके मामले में, सबसे अच्छा समाधान पूरे घटक को दूसरे घटक को दे देगा।

GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.NORTHWEST;

JLabel testLabel = new JLabel();
testLabel.setText("Test");
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weighty = 0;
gbc.weightx = 0;
right.add(testLabel, gbc);

JLabel test2Label = new JLabel();
test2Label.setText("test2");
gbc.gridx = 0;
gbc.gridy = 1;
gbc.weighty = 1;
gbc.weightx = 1;
right.add(test2Label, gbc);