如何在SWT GridLayout中替换网格单元格的内容?

时间:2011-10-05 13:45:19

标签: java swt grid-layout

按钮点击后我需要替换网格单元格的内容。例如:有标签,我需要用文本替换它。是否可以使用GridLayout?我需要使用SWT。

1 个答案:

答案 0 :(得分:8)

您可以简单地处置Label并在其位置添加新的TextGridLayout使用子项的z顺序来确定网格中的位置,因此您需要使用moveAbove()上的moveBelow()Text才能获得它在正确的位置。然后在父级上调用layout()。例如:

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

这是一个简单的小部件,它完全说明了我的意思:

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);
            }
        });
    }
}