我有三个SWT组控件,除了数字(即'grp1','grp2','grp3')外,其余名称相同。 我想在for周期中显示组控件;为此,我创建了一个包含Group控件的Array。
这是代码:
Group [] grpArray = new Group[3];
grpArray[0] = grp1;
grpArray[1] = grp2;
grpArray[2] = grp3;
txtLvl = new Text(composite, SWT.BORDER | SWT.READ_ONLY);
txtLvl.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
for (int i = 1; i <= Integer.parseInt(txtLvl.getText()); i++) {
grpArray[i-1].setVisible(true);
}
}
}
);
这是错误代码:
at it.anabasibdg.viste.AnagPdc$4.modifyText(AnagPdc.java:296)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Text.wmCommandChild(Unknown Source)
at org.eclipse.swt.widgets.Control.WM_COMMAND(Unknown Source)
at org.eclipse.swt.widgets.Control.windowProc(Unknown Source)
at org.eclipse.swt.widgets.Display.windowProc(Unknown Source)
at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
at org.eclipse.swt.internal.win32.OS.CallWindowProc(Unknown Source)
at org.eclipse.swt.widgets.Text.callWindowProc(Unknown Source)
at org.eclipse.swt.widgets.Control.windowProc(Unknown Source)
at org.eclipse.swt.widgets.Text.windowProc(Unknown Source)
at org.eclipse.swt.widgets.Display.windowProc(Unknown Source)
at org.eclipse.swt.internal.win32.OS.SetWindowTextW(Native Method)
at org.eclipse.swt.internal.win32.OS.SetWindowText(Unknown Source)
at org.eclipse.swt.widgets.Text.setText(Unknown Source)
at it.anabasibdg.viste.AnagPdc$3.widgetSelected(AnagPdc.java:213)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at it.anabasibdg.viste.Main.open(Main.java:58)
at it.anabasibdg.viste.LoginForm$3.widgetSelected(LoginForm.java:191)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at it.anabasibdg.viste.LoginForm.open(LoginForm.java:110)
at it.anabasibdg.viste.LoginForm$1.run(LoginForm.java:59)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at it.anabasibdg.viste.LoginForm.main(LoginForm.java:55)
答案 0 :(得分:-1)
我以这种方式解决了我的问题:
private ArrayList<Group> grpArray1 = new ArrayList<Group>();
txtLvl.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
groupArray(grp1, grp2,grp3);
for (Group grp : grpArray1) {
grp.setVisible(true);
}
public void groupArray(Group... c) {
for (Group group : c) {
grpArray1.add(group);
}
}