Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Eclipse plugin Eclipse向导中的页面-在页面之间导航的问题_Eclipse Plugin_Swt_Eclipse Rcp_Jface - Fatal编程技术网

Eclipse plugin Eclipse向导中的页面-在页面之间导航的问题

Eclipse plugin Eclipse向导中的页面-在页面之间导航的问题,eclipse-plugin,swt,eclipse-rcp,jface,Eclipse Plugin,Swt,Eclipse Rcp,Jface,我写了一个小程序,可以从一个页面导航到另一个页面。但我无法做到这一点 我的要求是 在PageOne上,如果用户输入一个值,则应验证该值,即简单比较,在本例中为“123”。 如果匹配,则进入下一页,如下所示: 第一页 第二页 否则,在下面弹出一个对话框: 第一页 第一页代码: package testing.importWizards; 导入org.eclipse.jface.dialogs.MessageDialog; 导入org.eclipse.jface.wizard.IWizardP

我写了一个小程序,可以从一个页面导航到另一个页面。但我无法做到这一点

我的要求是

在PageOne上,如果用户输入一个值,则应验证该值,即简单比较,在本例中为“123”。 如果匹配,则进入下一页,如下所示:

第一页

第二页

否则,在下面弹出一个对话框:

第一页

第一页代码:

package testing.importWizards;
导入org.eclipse.jface.dialogs.MessageDialog;
导入org.eclipse.jface.wizard.IWizardPage;
导入org.eclipse.jface.wizard.WizardPage;
导入org.eclipse.swt.swt;
导入org.eclipse.swt.events.KeyEvent;
导入org.eclipse.swt.events.KeyListener;
导入org.eclipse.swt.layout.GridData;
导入org.eclipse.swt.layout.GridLayout;
导入org.eclipse.swt.widgets.Composite;
导入org.eclipse.swt.widgets.Label;
导入org.eclipse.swt.widgets.Shell;
导入org.eclipse.swt.widgets.Text;
公共类PageOne扩展了WizardPage{
私有文本text1;
专用复合容器;
布尔值isVisible=false;
公共第一页(){
超级(“第一页”);
设置标题(“第一页”);
setDescription(“假向导:第一页”);
}
@凌驾
公共void createControl(复合父级){
容器=新的复合材料(母体,SWT.NONE);
GridLayout=新的GridLayout();
容器。设置布局(布局);
layout.numColumns=2;
标签标签1=新标签(容器,SWT.NONE);
label1.setText(“在此处输入值”);
text1=新文本(容器,SWT.BORDER | SWT.SINGLE);
text1.setText(“”);
text1.addKeyListener(新的KeyListener(){
@凌驾
按下公共无效键(按键事件e){
}
@凌驾
公共无效密钥已释放(密钥事件e){
如果(!text1.getText().isEmpty()){
setPageComplete(真);
}
}
});
GridData gd=新的GridData(GridData.FILL_HORIZONTAL);
text1.setLayoutData(gd);
setControl(集装箱);
setPageComplete(假);
}
@凌驾
公共IWizardPage getNextPage(){
//TODO自动生成的方法存根
Shell=getShell();
返回super.getNextPage();
}
公共字符串getText1(){
返回text1.getText();
}
}
第二页代码:

package testing.importWizards;
导入org.eclipse.jface.wizard.WizardPage;
导入org.eclipse.swt.swt;
导入org.eclipse.swt.events.KeyEvent;
导入org.eclipse.swt.events.KeyListener;
导入org.eclipse.swt.layout.GridData;
导入org.eclipse.swt.layout.GridLayout;
导入org.eclipse.swt.widgets.Composite;
导入org.eclipse.swt.widgets.Label;
导入org.eclipse.swt.widgets.Text;
公共类第二页扩展向导页{
私有文本text1;
专用复合容器;
公共网页二({
超级(“第二页”);
片名(“第二页”);
setDescription(“假向导:第二页”);
}
@凌驾
公共void createControl(复合父级){
容器=新的复合材料(母体,SWT.NONE);
GridLayout=新的GridLayout();
容器。设置布局(布局);
layout.numColumns=2;
标签标签1=新标签(容器,SWT.NONE);
标签1.setText(“成功”);
/*text1=新文本(容器,SWT.BORDER | SWT.SINGLE);
text1.setText(“”);
text1.addKeyListener(新的KeyListener(){
@凌驾
按下公共无效键(按键事件e){
}
@凌驾
公共无效密钥已释放(密钥事件e){
如果(!text1.getText().isEmpty()){
setPageComplete(真);
}
}
});*/
GridData gd=新的GridData(GridData.FILL_HORIZONTAL);
//text1.setLayoutData(gd);
setControl(集装箱);
//setPageComplete(假);
setPageComplete(真);
}
公共字符串getText1(){
返回text1.getText();
}
}

我已经告诉过重写setVisible和getNextPage方法,但是我得到了错误的行为。有人能给我解释一下实施验证的逻辑吗。我的整个方法都错了吗?

向导页面通常使用
setErrorMessage
setError
在向导顶部区域显示错误,而不是显示对话框

通常,每次更改页面上的数据时都可以方便地进行验证。第一页的示例如下:

公共类PageOne扩展向导页
{
私有文本text1;
公共第一页()
{
超级(“测试向导页面”);
设置标题(“第一页”);
setDescription(“假向导:第一页”);
}
@凌驾
公共void createControl(最终复合父级)
{
复合容器=新复合(父级,SWT.NONE);
setLayout(新的GridLayout(2,false));
标签标签1=新标签(容器,SWT.NONE);
label1.setText(“在此处输入值”);
text1=新文本(容器,SWT.BORDER | SWT.SINGLE);
text1.setLayoutData(新网格数据(SWT.FILL、SWT.CENTER、true、false));
text1.addModifyListener(this::modifyListener);
setControl(集装箱);
setPageComplete(假);
}    
私有void modifyListener(最终ModifyEvent事件)
{
boolean empty=text1.getText().isEmpty();
if(空)
setErrorMessage(“必须输入文本”);
其他的
s