以前の選択に応じて、要素が表示されるビューがあります。dispose() と parent.layout() は、期待どおりに要素を削除します。質問は、どうすればそれらを取り戻すことができますか? dispose() は要素を削除せず、要素リストから取り出してレンダリングするだけだと思います。では、どうすれば1つを取り戻すことができますか?
前もって感謝します、マーカス
編集:
dispose() がオブジェクトを解放し、再帰的にそれが子であることを発見したので、それらを破棄したら再作成する必要がありますか? もしそうなら、例えば GridLayout 内の位置を見つけるにはどうすればよいですか?
編集(2):
以下の回答によると、私はこれを試しました:
public class TestTab extends Composite
{
org.eclipse.swt.layout.GridLayout layout = null;
GridData griddata = null;
Button upperButton = null;
Text textInTheMiddle = null;
Button lowerButton = null;
public InvoiceTab(Composite parent, int arg2) {
super(parent, arg2);
final Composite myParent = parent;
layout = new org.eclipse.swt.layout.GridLayout(GridData.FILL_BOTH,
false);
layout.numColumns = 1;
this.setLayout(layout);
upperButton = new Button(this, SWT.PUSH);
upperButton.setText("upper Button");
textInTheMiddle = new Text(this, SWT.BORDER);
lowerButton = new Button(this, SWT.PUSH);
lowerButton.setText("lower Button");
upperButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
if (textInTheMiddle.isVisible()) {
textInTheMiddle.setVisible(false);
lowerButton.moveBelow(upperButton);
} else {
textInTheMiddle.setVisible(true);
lowerButton.moveBelow(textInTheMiddle);
}
myParent.layout();
}
});
}
}
テキストフィールドは期待どおりに表示されますが、下のボタンの場所は変わりませんか? ご意見ありがとうございます...