SWT shell 窗体如何在桌面中央显示?

解决方案 »

  1.   

    Shell shell = new Shell();
    shell.setSize(100, 100);
    int width = shell.getMonitor().getClientArea().width;
    int height = shell.getMonitor().getClientArea().height;
    int x = shell.getSize().x;
    int y = shell.getSize().y;
    if (x > width) {
    shell.getSize().x = width;
    }
    if (y > height) {
    shell.getSize().y = height;
    }
    shell.setLocation((width - x) / 2, (height - y) / 2);
      

  2.   

              Frame2   f   =   new   Frame2();
              f.setSize(550,200);
              Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
              Dimension size = f.getSize();
              int x = (screenSize.width - size.width) / 2;
              int y = (screenSize.height - size.height) / 2;
              f.setLocation( x, y );
              f.setVisible(true);
      

  3.   

     Frame2   f  =  new Frame2(); f.setLocationRelativeTo(null);这是最简单的,保证绝对居中对齐,效率最高 
      

  4.   

    BS一下楼上两位
    /**
     * 设置窗口位于屏幕中间
     * @param shell 要调整位置的窗口对象
     */
    public static void center(Shell shell)
    {
    //获取屏幕高度和宽度
    int screenH = Toolkit.getDefaultToolkit().getScreenSize().height;
    int screenW = Toolkit.getDefaultToolkit().getScreenSize().width;
    //获取对象窗口高度和宽度
    int shellH = shell.getBounds().height;
    int shellW = shell.getBounds().width;

    //如果对象窗口高度超出屏幕高度,则强制其与屏幕等高
    if(shellH > screenH)
    shellH = screenH;

    //如果对象窗口宽度超出屏幕宽度,则强制其与屏幕等宽
    if(shellW > screenW)
    shellW = screenW;

    //定位对象窗口坐标
    shell.setLocation(((screenW - shellW) / 2), ((screenH - shellH) / 2));
    }

    /**
     * 设置窗口位于屏幕中间
     * @param display 设备
     * @param shell 要调整位置的窗口对象
     */
    public static void center(Display display, Shell shell)
        {
            Rectangle bounds = display.getPrimaryMonitor().getBounds();
            Rectangle rect = shell.getBounds();
            int x = bounds.x + (bounds.width - rect.width) / 2;
            int y = bounds.y + (bounds.height - rect.height) / 2;
            shell.setLocation(x, y);
        }
      

  5.   

    为什么不直接new 一个居中的shell呢?
    final Shell shell = new Shell(SWT.CENTER);
    .....