swt - 重新创建复合材料

时间:2016-08-03 07:01:04

标签: java combobox swt

我有一个Composite的子类,它创建N个组合框,其中N由输入定义。因此,当用户进行更改时,组合框的数量可能会发生变化。目前,这并没有发生。我尝试了两种方法:

// On event, straight reconstruct, no change to number of dropdowns
myComp = new MyComposite(parent, SWT.NONE, newNum);

// On event, dispose and reconstruct, this completely removes my composite from the gui
myComp.dispose();
myComp = new MyComposite(parent, SWT.NONE, newNum);

这是我的Composite类:

public MyComposite(Composite parent, int num) {
    super(parent, SWT.BORDER);
    this.setText("MY Composite");
    this.setLayout(new GridLayout(1, true));
    this.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));

    combos = new HashMap<>();
    for(int i = 0; i < num; i++) {
        combos.put(i, new Combo(this, SWT.NONE));
    }
}

还有其他/更好的方法吗?

1 个答案:

答案 0 :(得分:2)

如果您更改Composite的内容,则需要告诉它您再次布局其内容。

所以

之后
myComp.dispose();
myComp = new MyComposite(parent, SWT.NONE, newNum);

你需要做

parent.layout(true, true);