2012-10-17 14 views
8

मेरे एसडब्ल्यूटी एप्लीकेशन में मेरे पास एसडब्ल्यूटी खोल के अंदर कुछ घटक हैं।हम SWT में घटकों के आकार का आकार कैसे बदल सकते हैं?

अब मैं डिस्प्ले विंडो के आकार के अनुसार इस घटकों को फिर से आकार कैसे दे सकता हूं।

Display display = new Display(); 

Shell shell = new Shell(display); 
Group outerGroup,lowerGroup; 
Text text; 

public test1() { 
    GridLayout gridLayout = new GridLayout(); 
    gridLayout.numColumns=1; 
    shell.setLayout(gridLayout); 

    outerGroup = new Group(shell, SWT.NONE); 

    GridData data = new GridData(1000,400); 
    data.verticalSpan = 2; 
    outerGroup.setLayoutData(data);  

    gridLayout = new GridLayout(); 

    gridLayout.numColumns=2; 
    gridLayout.makeColumnsEqualWidth=true; 
    outerGroup.setLayout(gridLayout); 

    ... 
} 

i.e जब मैं खिड़की के आकार को कम करता हूं तो इसके अंदर के घटकों को इसके अनुसार दिखाई देना चाहिए।

+0

आप के लिए सुन सकते हैं 'SWT.Resize' ईवेंट और घटकों पर 'लेआउट()' को कॉल करें – Alex

उत्तर

25

यह संदिग्ध लगता है जैसे आप लेआउट का उपयोग नहीं कर रहे हैं।

लेआउट की पूरी अवधारणा अनावश्यक आकार बदलने के बारे में चिंतित है। लेआउट अपने सभी घटकों के आकार का ख्याल रखेगा।

मैं Eclipse article about layouts

आपका कोड को पढ़ने के लिए सिफारिश करेंगे आसानी से सुधारा जा सकता है। व्यक्तिगत घटकों के आकार को सेट न करें, लेआउट उनके आकार को निर्धारित करेगा। आप विंडो एक पूर्वनिर्धारित आकार चाहते हैं, खोल के आकार सेट:

public static void main(String[] args) { 
    Display display = new Display(); 
    Shell shell = new Shell(display); 
    shell.setLayout(new GridLayout(1, false)); 

    Group outerGroup = new Group(shell, SWT.NONE); 

    // Tell the group to stretch in all directions 
    outerGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 
    outerGroup.setLayout(new GridLayout(2, true)); 
    outerGroup.setText("Group"); 

    Button left = new Button(outerGroup, SWT.PUSH); 
    left.setText("Left"); 

    // Tell the button to stretch in all directions 
    left.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

    Button right = new Button(outerGroup, SWT.PUSH); 
    right.setText("Right"); 

    // Tell the button to stretch in all directions 
    right.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); 

    shell.setSize(1000,400); 
    shell.open(); 

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

आकार बदलने से पहले:

Before resizing

आकार बदलने के बाद:

After resizing

+0

+1 ग्रेट उत्तर। –

+0

@ गिल्बर्टलेब्लैंक चीयर्स साथी। SWT.FILL के लिए – Baz

+1

+1, धन्यवाद @ बाज़ .. – HDdeveloper

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