2011-10-05 18 views

cevap

8

Label ürününü atıp yerine yeni bir Text yerleştirebilirsiniz. GridLayout, kılavuzdaki konumu belirlemek için çocukların z sırasını kullanır; bu nedenle, doğru konumda olması için Text numaralı telefondan moveAbove() ve moveBelow()'u kullanmanız gerekir. Ardından ebeveyne layout() numaralı telefonu arayın. Örneğin: Bu doğru çalışmıyor

public class ReplaceWidgetComposite 
    extends Composite 
{ 
    private Label label; 
    private Text text; 
    private Button button; 

    public ReplaceWidgetComposite(Composite parent, int style) 
    { 
     super(parent, style); 

     setLayout(new GridLayout(1, false)); 

     label = new Label(this, SWT.NONE); 
     label.setText("This is a label!"); 

     button = new Button(this, SWT.PUSH); 
     button.setText("Press me to change"); 
     button.addSelectionListener(new SelectionAdapter() 
     { 
      public void widgetSelected(SelectionEvent e) 
      { 
       text = new Text(ReplaceWidgetComposite.this, SWT.BORDER); 
       text.setText("Now it's a text!"); 
       text.moveAbove(label); 
       label.dispose(); 
       button.dispose(); 
       ReplaceWidgetComposite.this.layout(true); 
      } 
     }); 
    } 
} 
+0

:

Text text = new Text(label.getParent(), SWT.BORDER); text.moveAbove(label); label.dispose(); text.getParent().layout(); 

Burada ne demek istediğimi tam olarak tasvir o basit Widget bu. Bu kod, etiketlemeden sonra Metin hücresinin eklenmesine neden olur, ancak etiketi değiştirmek istedim. dispose() bir şekilde etiketini ızgaradan kaldırmaz çünkü hala görünür durumdadır. – alhcr

+0

Bir parçacığı atmak onu ebeveyninden kaldırmalıdır. Parent.layout (true) 'u çağırmayı deneyin. –

+0

Bu şekilde çalışmıyor gibi görünüyor. Shell.layout (true) var; ve biliyorum çünkü Metin ekleniyor ve ben görüyorum, ancak etiket hala görülebilir. Onu bir yerlerde kullandın mı ve doğru bir şekilde çalıştı mı? – alhcr

İlgili konular