我有两个复选框被设置为类似于单选按钮的功能(我使用了复选框,以便它们都可以缺省为.setSelection(false)
),当它们被选中时,它们会启动一个for循环,用适用的复选框填充4个组合。我的问题是,我找不到一种方法来清空组合或撤消在取消选择按钮时执行的操作。
final Button button = new Button(headerGroup, SWT.CHECK);
button.setText("Label");
Group group = new Group(shell, SWT.NONE);
group.setText("Group 2");
group.setLayout(new GridLayout(1, false));
GridData groupData = new GridData(SWT.FILL, SWT.FILL, true, false);
groupData.heightHint = 100;
groupData.widthHint = 150;
group.setLayoutData(groupData);
ScrolledComposite scrolledComposite = new ScrolledComposite(group, SWT.V_SCROLL);
scrolledComposite .setLayout(new GridLayout(1, false));
scrolledComposite .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Composite composite = new Composite(scrolledComposite, SWT.NONE);
composite .setLayout(new GridLayout(1, false));
composite .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
button.addListener(SWT.Selection, new Listener()
{
@Override
public void handleEvent(Event arg0){
boolean valueButton;
balueButton = button.getSelection();
if(valueButton == true){
List<Button> buttons = new ArrayList<Button>();
String labels[] = {"A", "B", "C", "D", "E", "F"};
// This is the for loop that I want to undo/delete when
// button is deselected
for (int i = 0; i < labels.length; i++) {
Button buttonLoop = new Button(composite, SWT.CHECK);
buttonLoop.setText(labels[i]);
buttons.add(buttonLoop);
}
}
}
});
是否有一种方法可以在取消选择button
时不显示for循环中的复选框来重新初始化composite
谢谢你的帮助!
发布于 2017-02-02 05:24:58
只需处理掉不再需要的Button控件即可。
您只需查看该组合的子项即可:
Control [] children = composite.getChildren();
for (Control child : children) {
if (child instanceof Button && !child.isDisposed()) {
child.dispose();
}
}
您可能还需要调用composite.layout(true)
来更新布局。
发布于 2017-02-02 05:25:09
为了释放内存,您必须释放小部件。然后,您可以像以前一样创建组合:
composite.dispose();
composite = new Composite(scrolledComposite, SWT.NONE);
composite.setLayout(new GridLayout(1, false));
composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
https://stackoverflow.com/questions/41989880
复制相似问题