我想根据您在菜单中点击的内容动态添加按钮。
我遇到的问题是,当我在菜单中选择一个新选项并取消选择第一个选项时,第一个选项会保持开启状态,而新选项会在其下面呈现。
如何动态删除和添加新按钮?
到目前为止我的代码:
table.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
final ArrayList<ArrayList<String>> displaySentences = new ArrayList<ArrayList<String>>();
final ArrayList<ArrayList<String[]>> displayDiphones = new ArrayList<ArrayList<String[]>>();
for (int i = 0; i < table.getItemCount(); i++) {
TableItem item = table.getItem(i);
if (item.getChecked()) {
displaySentences.add(new ArrayList<String>());
displayDiphones.add(new ArrayList<String[]>());
for (int j = 0; j < sentences.get(i).size(); j++) {
displaySentences.get(displaySentences.size() - 1).add(sentences.get(i).get(j));
displayDiphones.get(displayDiphones.size() - 1).add(diphones.get(i).get(j));
}
}
}
int x = 180;
int y = 10;
int w = 50;
for (int i = 0; i < displaySentences.size(); i++) {
for (int j = 0; j < displaySentences.get(i).size(); j++) {
final Button button = new Button(shell, SWT.PUSH);
w = setButtonWidth(displaySentences.get(i).get(j));
button.setBounds(x, y, w, 25);
button.setText(displaySentences.get(i).get(j));
button.setData(displaySentences.get(i).get(j), new int[] { i, j });
x += w;
if (x > 700) {
x = 180;
y += 25;
}
button.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
switch (e.type) {
case SWT.Selection:
int[] a = (int[]) button.getData(button.getText());
for (int k = 0; k < displayDiphones.get(a[0]).get(a[1]).length; k++) {
final Button buttonDiphone = new Button(shell, SWT.PUSH);
buttonDiphone.setBounds(180 + k * 30, 100, 30, 25);
buttonDiphone.setText(displayDiphones.get(a[0]).get(a[1])[k]);
buttonDiphone.setData(displayDiphones.get(a[0]).get(a[1])[k], randomInteger());
buttonDiphone.addListener(SWT.Selection, new Listener() {
public void handleEvent(
Event e) {
switch (e.type) {
case SWT.Selection:
txtConsole.setText(buttonDiphone.getText() + ": " + buttonDiphone.getData(buttonDiphone.getText()));
break;
}
}
});
}
break;
}
}
});
}
}
}
});
谢谢!