2009-01-12 4 views
5

यदि मेरे पास SWT के साथ एक टेक्स्ट फ़ील्ड है, तो मैं 100% या कुछ निर्दिष्ट चौड़ाई को भरने के लिए फ़ील्ड कैसे प्राप्त कर सकता हूं।टेक्स्ट फ़ील्ड को क्षैतिज रूप से 100% भरने के लिए कैसे करें

उदाहरण के लिए, यह टेक्स्ट फ़ील्ड केवल क्षैतिज रूप से पहुंच जाएगा।

Text text = new Text(shell, SWT.BORDER); 
text.setText ("Text Field"); 
text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER)); 

/: चूंकि यह स्वीकार किए जाते हैं जवाब है मैं त्रुटियों को दूर

public class Tmp { 
    public static void main (String [] args) { 
     Display display = new Display(); 
     Shell shell = new Shell (display); 
     GridLayout gridLayout = new GridLayout(); 
     shell.setLayout (gridLayout); 

     Button button0 = new Button(shell, SWT.PUSH); 
     button0.setText ("button0"); 

     Text text = new Text(shell, SWT.BORDER | SWT.FILL); 
     text.setText ("Text Field"); 

     shell.setSize(500, 400); 
     //shell.pack(); 
     shell.open(); 

     while (!shell.isDisposed()) { 
      if (!display.readAndDispatch()) 
       display.sleep(); 
     } 
     display.dispose(); 
    } 
} 

उत्तर

4

कुछ इस तरह करते हैं। मुझे सुधारने के लिए Thx।

+0

कन्स्ट्रक्टर ग्रिडडाटा (int) को बहिष्कृत किया गया है। " – qualidafial

+0

के बजाय" नया ग्रिडडाटा (SWT.FILL, SWT.CENTER) "का उपयोग करें, आपको ग्रिडडेटा ऑब्जेक्ट्स का पुन: उपयोग नहीं करना चाहिए क्योंकि वे ग्रिड सेल गणनाओं के लिए कैश के रूप में कार्य करते हैं। ग्रिडडाटा पुन: उपयोग लेआउट बग का कारण बन सकता है जहां एक सामान्य ग्रिडडाटा साझा करने वाले कई घटक सबसे छोटे आकार के आकार के लिए छोटा कर दिए जाते हैं। यह ग्रिडडाटा के जावाडोक में है। – christopheml

+1

यह अब गलत लगता है (शायद एपीआई बदल गया है?), [कन्स्ट्रक्टर 'ग्रिडडाटा (int चौड़ाई, int ऊंचाई) '] (http://help.eclipse.org/juno/index.jsp?topic=%2Forg। eclipse.platform.doc.isv% 2 संदर्भ% 2Fapi% 2Forg% 2 फ़ेक्लिसे% 2Fswt% 2Flayout% 2FGridData.html) न्यूनतम आयाम सेट करता है और इन SWT स्थिरांक के साथ उपयोग नहीं किया जा सकता है। – Kapep

4

किसी घटक में तत्वों की स्थिति निर्धारण उस लेआउट ऑब्जेक्ट पर निर्भर करता है जिसका आप उपयोग कर रहे हैं। प्रदान किए गए नमूने में, आप ग्रिडलाउट का उपयोग कर रहे हैं। इसका मतलब यह है कि आपको यह निर्दिष्ट करने के लिए एक विशिष्ट लेआउटडेटा ऑब्जेक्ट प्रदान करना होगा कि आप अपना घटक कैसे प्रदर्शित करना चाहते हैं। ग्रिडलाउट के मामले में, ऑब्जेक्ट ग्रिडडाटा है।

// Fills available horizontal and vertical space, grabs horizontal space,grab 
// does not grab vertical space 
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, false); 
text.setLayoutData(gd); 

वैकल्पिक तरीके ऐसे FormLayout रूप में एक अलग LayoutManager, का उपयोग कर में शामिल हैं:

प्राप्त करने के लिए आप क्या चाहते हैं, तो आप एक GridData उद्देश्य यह है कि सभी क्षैतिज स्थान पकड़ लेता है और यह भरता बनाना होगा। यह लेआउट एक फॉर्मडाटा ऑब्जेक्ट का उपयोग करता है जो आपको यह भी निर्दिष्ट करने की अनुमति देता है कि स्क्रीन पर घटक कैसे रखा जाएगा।

You can also read this article on Layouts to understand how Layouts work

एक साइड नोट के रूप में, निर्माता नई ग्रिडडाटा (int शैली) को दस्तावेज़ में "अनुशंसित नहीं" के रूप में चिह्नित किया गया है। इस उदाहरण में दिखाए गए स्पष्ट कन्स्ट्रक्टर को इसके बजाय प्राथमिकता दी जाती है।

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