2010-03-24 11 views
20

जब मैं ग्रिडलाउट को जेपीनल में सेट करता हूं और फिर कुछ जोड़ता हूं, तो इसे बाद में "टेक्स्ट ऑर्डर" (बाएं से दाएं, ऊपर से नीचे तक) में जोड़ा जाता है। लेकिन मैं एक विशिष्ट सेल में एक तत्व जोड़ना चाहता हूं (जे-वें कॉलम में i-th पंक्ति में)। क्या यह संभव है?क्या ग्रिडलाउट का उपयोग होने पर मैं एक विशिष्ट ग्रिड सेल में एक घटक जोड़ सकता हूं?

उत्तर

38

नहीं, आप किसी विशिष्ट सेल पर घटक नहीं जोड़ सकते हैं। आप क्या कर सकते हैं खाली जेपीनल ऑब्जेक्ट्स जोड़ें और उन्हें सरणी में संदर्भों पर रखें, फिर किसी भी क्रम में उन्हें घटक जोड़ें।

कुछ की तरह:

int i = 3; 
int j = 4; 
JPanel[][] panelHolder = new JPanel[i][j];  
setLayout(new GridLayout(i,j)); 

for(int m = 0; m < i; m++) { 
    for(int n = 0; n < j; n++) { 
     panelHolder[m][n] = new JPanel(); 
     add(panelHolder[m][n]); 
    } 
} 
बाद में

उसके बाद, आप JPanel वस्तुओं में से एक में सीधे जोड़ सकते:

panelHolder[2][3].add(new JButton("Foo")); 
+1

या, आप 'GridLayout' से जुड़ा नहीं है, तो आप उपयोग कर सकते हैं [ 'GridBagLayout'] (http://docs.oracle.com/javase/tutorial/uiswing/layout/gridbag.html) – bluefoot

4

हाँ

JPanel panel = new JPanel(); 
    panel.setLayout(new GridLayout(2,2,1,1)); 
    JButton component= new JButton("Component"); 
    panel.add(component, 0,0); 

अपने पैनल बना सकते हैं और सेट अपने लेआउट।
नई GridLayout (numberOfRows, numberOfColums, HorizontalGap, VerticleGap)

(नई GridLayout (2,2,1,1))   = यहाँ मैं 2 पंक्तियाँ, 2 कॉलम,
चाहते हैं> - यदि कोई क्षैतिज अंतराल (एचजीएपी), वे 1px (1unit)
होना चाहिए - मैं वर्टिकल अंतराल के लिए भी वही चाहता हूं, इसलिए मैं ऊर्ध्वाधर अंतराल (VGap) के समान करता हूं। i.e 1 इकाई
- इस मामले में; अंतराल   => अंतर/मार्जिन/पैडिंग - उस अर्थ में।

अपने घटकों बनाएँ और उन्हें पैनल
के लिए जोड़ - (घटक, 0,0)   => 0,0 पंक्ति और स्तंभ .. (एक 2d सरणी की तरह) है।
निर्दिष्ट करें कि आपका घटक पंक्ति और कॉलम डालकर कहां जाता है जहां इसे जाना चाहिए।
प्रत्येक कोशिका एक स्थान == [पंक्ति] [स्तंभ]

है या आप hgaps और vgaps बिना यह कर सकते हैं:

JPanel panel = new JPanel();   
    panel.setLayout(new GridLayout(2,2)); 
    JButton component= new JButton("Component"); 
    panel.add(component, 0,0); 
संबंधित मुद्दे

 संबंधित मुद्दे