NetBeans RCP - всплывающее окно центрирования не работает должным образом - PullRequest
0 голосов
/ 23 ноября 2011
 errorPopup= popFactory.getPopup(this, errorBox, 
                    (verifierTopComponent.super.getX()+verifierTopComponent.super.getWidth()/2),
                    (verifierTopComponent.super.getY()+verifierTopComponent.super.getHeight()/2));

Приведенный выше код работает и правильно центрирует всплывающее окно ... но только если окно полноэкранного на моем главном мониторе.

Как сделать его более надежным?Я бы хотел расположить его по центру текущего экземпляра RCP.

(verifyierTopComponent - мой неправильно названный TopComponent в модуле).

После комментария ниже мне интересно,Может быть, вы обычно используете совершенно другой метод для создания всплывающего окна?Я просто пытаюсь что-то положить в лицо пользователя, чтобы он знал, почему что-то не работает, как они это сделали.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2011

Я не уверен, как решить вашу конкретную проблему, но по моему опыту вы можете / должны использовать класс org.openide.NotifyDescriptor NetBeans для показа уведомлений пользователю. Вам нужно будет добавить зависимость для 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 для списка подклассов.

0 голосов
/ 23 ноября 2011

При использовании RCP NetBeans лучше использовать DialogDisplayer и DialogDescriptor

Примерно так:

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

Он автоматически позаботится о расчете правильной позиции.

...