我想显示一条错误消息,该消息显示在向导窗口顶部的向导中(如下面的屏幕截图中的无法创建项目内容... 消息)。
根据我在互联网上发现的内容,我必须使用方法setErrorMessage
来执行此操作。
但它在我的向导类中并不存在:
import org.eclipse.jface.wizard.Wizard;
public class MyWizard extends Wizard {
public MyWizard() {
super();
setErrorMessage("Error message"); // No such method
getContainer().getCurrentPage().setErrorMessage("Error message 2"); // This also doesn't exist
}
如何设置向导的错误消息?
答案 0 :(得分:3)
JFace的Wizard
有页面。您自己创建这些页面,扩展WizardPage
。在该课程中,您将找到setErrorMessage
API。
更快的替代方法是使用TitleAreaDialog
,它不需要页面。您也可以在那里使用错误API。
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
/**
*
* @author ggrec
*
*/
public class TestWizard extends Wizard
{
// ==================== 3. Static Methods ====================
public static void main(final String[] args)
{
final Display display = new Display();
final Shell shell = new Shell(display);
shell.setLayout(new GridLayout(1, false));
final WizardDialog dialog = new WizardDialog(shell, new TestWizard());
dialog.open();
if (!display.readAndDispatch())
display.sleep();
display.dispose();
}
// ==================== 4. Constructors ====================
private TestWizard()
{
}
// ==================== 5. Creators ====================
@Override
public void addPages()
{
addPage(new TestPage());
// Or, you could make a local var out of the page,
// and set the error message here.
}
// ==================== 6. Action Methods ====================
@Override
public boolean performFinish()
{
return true;
}
// =======================================================
// 19. Inline Classes
// =======================================================
private class TestPage extends WizardPage
{
private TestPage()
{
super(TestPage.class.getCanonicalName());
}
@Override
public void createControl(final Composite parent)
{
setControl(new Composite(parent, SWT.NULL));
setErrorMessage("HOUSTON, WE'RE GOING DOWN !!!!!");
}
}
}
答案 1 :(得分:3)
setErrorMessage
是WizardPage
中的一种方法,但它不包含在IWizardPage
返回的IWizardContainer.getCurrentPage
界面中。
通常是您的向导页面类设置错误消息 - 他们可以调用setErrorMessage(text)