एक और समाधान यह है कि आप दो डमी पैनल (कंटेनर) को सबसे दाएं, सबसे नीचे में जोड़ते हैं। तो आप अतिरिक्त जगह वितरित करने के लिए भारोत्तोलन और भारोत्तोलन समायोजित करते हैं। यदि आप डमी को 1 सेट करते हैं तो सभी अतिरिक्त स्थान इस डमी को असाइन करते हैं।
यह नेटबीन में एक उदाहरण है।
package tutorial;
/**
*
* @author ttn
*/
public class GridBag1 extends javax.swing.JPanel {
/**
* Creates new form GridBag1
*/
public GridBag1() {
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
jLabel1 = new javax.swing.JLabel();
jTextField1 = new javax.swing.JTextField();
jPanel1 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jTextField2 = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
setLayout(new java.awt.GridBagLayout());
jLabel1.setText("jLabel1");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
add(jLabel1, gridBagConstraints);
jTextField1.setText("jTextField1");
jTextField1.setMinimumSize(new java.awt.Dimension(59, 20));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 0.3;
add(jTextField1, gridBagConstraints);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 227, Short.MAX_VALUE)
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 104, Short.MAX_VALUE)
);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridheight = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
add(jPanel1, gridBagConstraints);
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 172, Short.MAX_VALUE)
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 196, Short.MAX_VALUE)
);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weighty = 1.0;
add(jPanel2, gridBagConstraints);
jLabel2.setText("jLabel2");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
add(jLabel2, gridBagConstraints);
jTextField2.setText("jTextField2");
jTextField2.setMinimumSize(new java.awt.Dimension(59, 20));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 0.3;
add(jTextField2, gridBagConstraints);
jScrollPane1.setMinimumSize(new java.awt.Dimension(104, 64));
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.gridwidth = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.FIRST_LINE_START;
add(jScrollPane1, gridBagConstraints);
}// </editor-fold>
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
private javax.swing.JTextField jTextField2;
// End of variables declaration
}
यह पर्याप्त नहीं है, आपके पास एक घटक होना चाहिए जो शेष क्षैतिज स्थान को भरता हो। –
हाँ मुझे पता है; यह सवाल नहीं है, समस्या जेपीनल के बाएं ऊपरी कोने में इस पूरे 'ग्रिड' को डालने में है, जो तत्व धारण कर रही है, ग्रिडबैग के घटकों को बिछाने के आंतरिक काम में हस्तक्षेप नहीं कर रही है। बस ग्रिडबैग को बताने के लिए: ठीक है, लड़का, आप अपनी नौकरी करते हैं, बस केंद्र में बैठने के बजाए बाएं ऊपरी कोने पर बैठें –
@as: बॉम्बे सही है कि आपको GridBagConstraints.anchor का उपयोग करने की आवश्यकता है, बस थोड़ा सा याद किया भरने के घटक। मेरा मानना है कि मैं यह कहने में सही हूं कि ग्रिडबैगलाउट JComponent.setAlignmentX और JComponent.setAlignmentY का सम्मान नहीं करता है, जिनमें से दोनों घटक पर लागू होते हैं, न कि कंटेनर की सामग्री। –