我有一个有3个不同部分的GUI。在其中一个部分我有2个复选框。 当选中其中一个复选框时,我想再添加一个小部件多选列表。
我在checkbox中添加了一个selectionListener,当它被选中时,我正在调用创建多个选择列表的方法。
问题是,当选中复选框时,此列表未在GUI中添加,并且在未选中复选框时不会删除该列表。
我无法找到原因。有人能帮助我吗?
以下是添加多选列表的代码
private void createFirstLevelSubFolderGroup() {
GridData gridData = new GridData();
gridData.grabExcessVerticalSpace = true;
gridData.verticalAlignment = org.eclipse.swt.layout.GridData.FILL;
gridData.horizontalAlignment = org.eclipse.swt.layout.GridData.FILL;
gridData.grabExcessHorizontalSpace = true;
subFolderGroup = new Group(this, SWT.NONE);
subFolderGroup.setLayout(new FillLayout());
subFolderGroup.setLayoutData(gridData);
subFolderGroup.setText("First Level SubFolder");
firstLevelFolderList = new List(subFolderGroup, SWT.V_SCROLL | SWT.MULTI);
subFolderGroup.setVisible(true);
//firstLevelFolderList.setVisible(false);
}
//code where the call to add this list is there
//code adding a checkbox is here and below am adding a listener to that checkbox
ArchiveCheckbox.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e)
{
if (ArchiveCheckbox.getSelection()) {
// here am trying to call the method which adds multiple selection list
createFirstLevelSubFolderGroup();
}
else {
// I want to remove that widget
subFolderGroup.setVisible(false);
firstLevelFolderList.removeAll();
}
}
}
基本上我无法动态添加它。
如果我提供的代码没有req信息,那么演示我的场景的小代码片段就可以了。
![以下是我正在创作的gui。当选中复选框准备存档以进行捕获时,我希望复选框下方应出现一个多选列表,并且在取消选中时它应该会消失。目前,当检查多个选择列表时,它会隐藏另一个包含来源的组模型[1]
[2]: http://i.stack.imgur.com/Xl2ml.png
答案 0 :(得分:1)
在开始时创建所有控件。在要隐藏的每个控件上设置GridData
布局,并将exclude
标志设置为true,并使控件不可见。如下所示:
Control control = .. create control ...
GridData data = new GridData(flags);
data.exclude = true;
control.setLayoutData(data);
control.setVisible(false);
如果要使控件可见,请将exclude
标记设置为false,使控件可见,并在父layout()
上调用Composite
。
GridData data = (GridData)control.getLayoutData();
data.exclude = false;
control.setVisible(true);
parentComposite.layout();