NetBeans RCP -居中弹出窗口未能按预期工作


 errorPopup= popFactory.getPopup(this, errorBox, 
                    (verifierTopComponent.super.getX()+verifierTopComponent.super.getWidth()/2),
                    (verifierTopComponent.super.getY()+verifierTopComponent.super.getHeight()/2));

上面的代码可以正常工作,并正确地将弹出框居中…但只有当窗口全屏时,在我的主显示器上。

我如何使它更健壮?我想把它放在当前RCP实例的中间。

(verifierTopComponent是我在模块中错误命名的TopComponent)。

看完下面的评论,我想知道你们是否都使用了一种截然不同的方法来创建弹出窗口?我只是想让用户看到一些东西,让他们知道为什么事情不会像他们做的那样起作用。

当使用NetBeans RCP时,您应该使用dialogdisplay和DialogDescriptor

像这样:

DialogDescriptor dd = new DialogDescriptor(errorBox, "Error message");
Object result = DialogDisplayer.getDefault().notify(dd);

它会自动计算正确的位置

我不确定如何解决您的具体问题,但根据我的经验,您可以/应该使用NetBeans的org.openide.NotifyDescriptor类向用户显示通知。你需要在你的模块中添加Dialog API的依赖项来使用下面的代码。

    NotifyDescriptor nd = new NotifyDescriptor(
            "This is the message that will go in the main body of the message. This could also be a custom JPanel",
            "Title of Dialog",
            NotifyDescriptor.DEFAULT_OPTION,
            NotifyDescriptor.ERROR_MESSAGE, 
            null, // this could be an array of JButtons that will replace the dialog's built-in buttons
            NotifyDescriptor.OK_OPTION);
    Object returnedValue = DialogDisplayer.getDefault().notify(nd);
    if (returnedValue == NotifyDescriptor.OK_OPTION) {
        // user pressed OK button
    }

与往常一样,请参阅javadoc的NotifyDescriptor获取更多信息

编辑如另一个答案所述,您可以使用DialogDescriptor类,它扩展了NotifyDescriptor类,并添加了将对话框设置为模式的能力以及其他一些有用的功能。

还有一些其他有用的类可以扩展NotifyDescriptor类,这些类可能对其他情况有用。查看javadoc的NotifyDescriptor以获取子类列表。

相关内容

  • 没有找到相关文章

最新更新