2009-08-14 15 views
12

के केंद्र में घटकों को न रखने के लिए ग्रिडबैगलाउआउट को कैसे धक्का देना है समस्याएं घटकों के केंद्रित लेआउट में हैं, ग्रिडबैगलाउट हमेशा जेपीनल के केंद्र में 'बैठता है', इसलिए मुझे परवाह नहीं है कि यह लेआउट घटकों के अंदर कैसे होगा, मेरी समस्या वह जगह है जहां ये घटक पैनल पर बिछाना शुरू कर देंगे।जेपीनेल

मैं के साथ की कोशिश की:

panel.setAlignmentX(JPanel.LEFT_ALIGNMENT); 

लेकिन यह मदद नहीं की थी।

कोई विचार?

उत्तर

19

आपको कम से कम एक घटक जोड़ने की आवश्यकता है जो क्षैतिज स्थान को भर देगा। आप इस तरह के एक घटक नहीं है, तो आप इस कोशिश कर सकते हैं:

GridBagConstraints noFill = new GridBagConstraints(); 
noFill.anchor = GridBagConstraints.WEST; 
noFill.fill = GridBagConstraints.NONE; 

GridBagConstraints horizontalFill = new GridBagConstraints(); 
horizontalFill.anchor = GridBagConstraints.WEST; 
horizontalFill.fill = GridBagConstraints.HORIZONTAL;  

panel.add(new JLabel("Left Aligned"), noFill); 
panel.add(Box.createHorizontalGlue(), horizontalFill); 
0

आप जहां एक घटक GridBagConstraints से पैरामीटर anchor का उपयोग एक सेल एक GridBagLayout द्वारा बनाई में स्थित है बदलना चाहते हैं।

+0

यह पर्याप्त नहीं है, आपके पास एक घटक होना चाहिए जो शेष क्षैतिज स्थान को भरता हो। –

+0

हाँ मुझे पता है; यह सवाल नहीं है, समस्या जेपीनल के बाएं ऊपरी कोने में इस पूरे 'ग्रिड' को डालने में है, जो तत्व धारण कर रही है, ग्रिडबैग के घटकों को बिछाने के आंतरिक काम में हस्तक्षेप नहीं कर रही है। बस ग्रिडबैग को बताने के लिए: ठीक है, लड़का, आप अपनी नौकरी करते हैं, बस केंद्र में बैठने के बजाए बाएं ऊपरी कोने पर बैठें –

+1

@as: बॉम्बे सही है कि आपको GridBagConstraints.anchor का उपयोग करने की आवश्यकता है, बस थोड़ा सा याद किया भरने के घटक। मेरा मानना ​​है कि मैं यह कहने में सही हूं कि ग्रिडबैगलाउट JComponent.setAlignmentX और JComponent.setAlignmentY का सम्मान नहीं करता है, जिनमें से दोनों घटक पर लागू होते हैं, न कि कंटेनर की सामग्री। –

0

मुझे आपके जैसी ही समस्या थी। उस पैनल को सीमावर्ती और उत्तरी बाधा के साथ उस पैनल को जोड़कर हल करें।

ओंद्रेज

0

आप बस इस उपयोगिता जार painless-gridbag का उपयोग करके यह किया जा सकता है। यह भी अपने कोड GridBagLayout के साथ बहुत खूबसूरत,

PainlessGridBag gbl = new PainlessGridBag(getContentPane(), false); 

    gbl.row().cell(lblFirstName).cell(txtFirstName).fillX() 
      .cell(lblFamilyName).cell(txtFamilyName).fillX(); 
    gbl.row().cell(lblAddress).cellXRemainder(txtAddress).fillX(); 

    gbl.doneAndPushEverythingToTop(); 
+0

-1 एक दर्द को दूसरे के साथ घटाना। ग्रिडबैगलाउट सीखने के लिए यह कहीं अधिक उपयोगी है। –

8

निम्नलिखित anchor और fill क्षेत्रों करने के साथ ही की तरह बनाने के लिए, आप की संभावना weightx क्षेत्र स्थापित करने के लिए की आवश्यकता होगी। यह आकार बदलने का व्यवहार निर्दिष्ट करने में मदद करता है।

Quote:

जब तक आप कम से कम एक गैर शून्य weightx या प्रभावपूर्ण के लिए मान निर्दिष्ट, सभी घटकों को उनके कंटेनर के केंद्र में पेड़ों का झुरमुट। ऐसा इसलिए होता है क्योंकि जब वजन 0.0 (डिफ़ॉल्ट) होता है, तो ग्रिडबैगलाउट कोशिकाओं के ग्रिड और कंटेनर के किनारों के बीच कोई अतिरिक्त जगह रखता है।

निम्नलिखित myComponentNORTHWEST कोने पर अंकित होगा। मान लिया जाये कि thisJPanel या समान है:

setLayout(new GridBagLayout()); 
GridBagConstraints c = new GridBagConstraints(); 

// Specify horizontal fill, with top-left corner anchoring 
c.fill = GridBagConstraints.HORIZONTAL; 
c.anchor = GridBagConstraints.NORTHWEST; 

// Select x- and y-direction weight. Without a non-zero weight, 
// the component will still be centered in the given direction. 
c.weightx = 1; 
c.weighty = 1; 

// Add child component 
add(myComponent, c); 

बच्चे घटकों बाईं ओर संरेखित अभी तक खड़ी केंद्रित रहने के लिए, anchor = WEST सेट और weighty = 1; को हटा दें।

0

आप मुख्य लेआउट को फ्लोलेआउट के रूप में सेट कर सकते हैं और बाईं ओर संरेखण सेट कर सकते हैं। इस पैनल (फ्लोलेआउट) में, एक पैनल जोड़ें जो ग्रिडबैगआउट है। यह netbeans में भी काम किया जाता है

0

एक और समाधान यह है कि आप दो डमी पैनल (कंटेनर) को सबसे दाएं, सबसे नीचे में जोड़ते हैं। तो आप अतिरिक्त जगह वितरित करने के लिए भारोत्तोलन और भारोत्तोलन समायोजित करते हैं। यदि आप डमी को 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     
} 
संबंधित मुद्दे