java - 在组合框eclipse插件中获取所选项目的值
问题描述
如何从组合框中获取所选项目的值?执行 saveInput 方法时,我不断收到空指针异常。
这是我的对话框代码:
public class MyTitleAreaDialog extends TitleAreaDialog {
private String age;
private Combo combo;
public MyTitleAreaDialog(Shell parentShell) {
super(parentShell);
}
@Override
public void create() {
super.create();
setTitle("Age Box");
setMessage("Please enter your info..", IMessageProvider.INFORMATION);
}
@Override
protected Control createDialogArea(Composite parent) {
Combo combo = new Combo(container, SWT.READ_ONLY);
combo.setItems(new String[] {"21", "22", "23"});
return area;
}
private void saveInput() {
if(combo.getSelectionIndex() >= 0){
age = combo.getItem(combo.getSelectionIndex());
}
}
@Override
protected void okPressed() {
saveInput();
super.okPressed();
}
public String getSelectedAge() {
return age;
}
}
这是处理程序代码:
public class SampleHandler extends AbstractHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
MyTitleAreaDialog dialog = new MyTitleAreaDialog(window.getShell());
dialog.create();
if (dialog.open() == Window.OK) {
System.out.println(dialog.getSelectedAge());
}
return null;
}
}
我会很感激任何帮助..我是 Java 和 Eclipse 编程的新手...谢谢!!
解决方案
您的createDialogArea
方法是将 分配给Combo
名为 的局部变量combo
,而不是名为 的字段combo
。
代替:
Combo combo = new Combo(container, SWT.READ_ONLY);
和
combo = new Combo(container, SWT.READ_ONLY);