繁体   English   中英

如何在Eclipse RCP向导中显示错误消息?

[英]How to display error message in an Eclipse RCP wizard?

我想显示一条错误消息,该消息出现在向导窗口顶部的向导中(如下面的屏幕快照中的“ 无法创建项目内容...”消息)。

截图

根据我在互联网上发现的信息,我必须使用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
    }

如何设置向导的错误消息?

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 !!!!!");
        }

    }

}

setErrorMessageWizardPage一种方法,但不包含在IWizardContainer.getCurrentPage返回的IWizardPage接口中。

通常是您的向导页面类设置错误消息-它们可以调用setErrorMessage(text)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM