我已经创建了向导,我希望它始终位于中心位置,有人可以帮助我吗?

发布于 2024-12-28 12:38:14 字数 479 浏览 0 评论 0原文

private Point getFirstMonitorSize() { // Here Point is org.eclipse.swt.graphics.Point
    Display display = Display.getDefault();
    if (display != null) {
        Monitor[] monitors = display.getMonitors();
        if (monitors.length == 1) {
            Rectangle clientArea = monitors[0].getClientArea();
            return new Point(clientArea.width / 2, clientArea.height / 2);
        }
    }
    return null;
}

我发现这个用于定位,但我不知道如何在向导对话框中使用?

private Point getFirstMonitorSize() { // Here Point is org.eclipse.swt.graphics.Point
    Display display = Display.getDefault();
    if (display != null) {
        Monitor[] monitors = display.getMonitors();
        if (monitors.length == 1) {
            Rectangle clientArea = monitors[0].getClientArea();
            return new Point(clientArea.width / 2, clientArea.height / 2);
        }
    }
    return null;
}

I found out this for positioning but i don't know how to use in wizard dialog?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

堇色安年 2025-01-04 12:38:14

对于 Eclipse E4,您可以在 E4LifeCycle 类中添加此方法。
这将使您的应用程序成为主监视器的中心。

这将使您的应用程序 shell 位置位于屏幕中心,如果您打开 WizardDialog,在其中设置正确的 parent shell 那么一切都会就位

@Inject
@Optional
public void receiveActiveShell(@Named(IServiceConstants.ACTIVE_SHELL) final Shell shell) {
    try {
        if (shell != null) {
            final Display display = shell.getDisplay();
            final Monitor primary = display.getPrimaryMonitor();
            final Rectangle displayBounds = primary.getBounds();
            shell.setSize(displayBounds.width - 100, displayBounds.height - 100);
            final Point size = shell.getSize();
            Point defaultLocation = new Point((int) (displayBounds.width - size.x) / 2, (int) (displayBounds.height - size.y) / 2);
            shell.setLocation(this.defaultLocation);
        }
    } catch (Exception e) {
        LOGGER.error("Execption ocuured in Active Shell", e); //$NON-NLS-1$
    }
}

For Eclipse E4, you can add this method in your E4LifeCycle class.
This will make your application centre of primary monitor.

This will make your application shell location in centre of screen, this if you open the WizardDialog where you set the proper parent shell then every thing will fall into place

@Inject
@Optional
public void receiveActiveShell(@Named(IServiceConstants.ACTIVE_SHELL) final Shell shell) {
    try {
        if (shell != null) {
            final Display display = shell.getDisplay();
            final Monitor primary = display.getPrimaryMonitor();
            final Rectangle displayBounds = primary.getBounds();
            shell.setSize(displayBounds.width - 100, displayBounds.height - 100);
            final Point size = shell.getSize();
            Point defaultLocation = new Point((int) (displayBounds.width - size.x) / 2, (int) (displayBounds.height - size.y) / 2);
            shell.setLocation(this.defaultLocation);
        }
    } catch (Exception e) {
        LOGGER.error("Execption ocuured in Active Shell", e); //$NON-NLS-1$
    }
}
世界如花海般美丽 2025-01-04 12:38:14

您可以通过调用 wizardDialog.getShell().setLocation(..) 来定位向导对话框。

You can position your wizard dialog by calling wizardDialog.getShell().setLocation(..).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文