【问题标题】:JFace, SWT Change comboviewer width when input changedJFace,SWT 在输入更改时更改组合查看器宽度
【发布时间】:2016-01-02 11:20:20
【问题描述】:

我有两个组合查看器,其想法是第二个组合将根据选择的第一个组合值显示选项子集。但是在第二个组合中设置新输入并刷新组合宽度后,组合宽度太小了。如何将其设置为自动调整选项宽度?

public class ExpresionDialog extends Dialog {
    private ComboViewer combo1;
    private ComboViewer combo2;

    @Override
    protected Control createDialogArea(Composite composite) {
        Composite parent = (Composite) super.createDialogArea(composite);
        GridData data = new GridData(SWT.FILL, SWT.FILL, true, false, 2, 1);

        combo1 = new ComboViewer(parent);
        combo1.setLabelProvider(new LabelProvider());
        combo1.setContentProvider(ArrayContentProvider.getInstance());
        combo1.addSelectionChangedListener(new ISelectionChangedListener() {
            public void selectionChanged(SelectionChangedEvent e) {
                IStructuredSelection sel = (IStructuredSelection) e.getSelection();
                AttributeOption option = (AttributeOption) sel.getFirstElement();
                combo2.setInput(getValuesCombo2(option));
                combo2.refresh(true);
            }
        });
        combo1.setInput(getValuesCombo1());

        combo2 = new ComboViewer(parent);
        combo2.setLabelProvider(new LabelProvider());
        combo2.setContentProvider(ArrayContentProvider.getInstance());

        return parent;
    }

// Omitted getValuesCombo1 and getValuesCombo2 methods ...
}

【问题讨论】:

    标签: java swt jface


    【解决方案1】:

    每次更改内容时,您都需要调用父级Compositelayout 方法以使其重做子布局。

    【讨论】:

      猜你喜欢
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-22
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多