将浏览器外壳移动到右上角

时间:2018-03-27 10:05:09

标签: java swt

使用java,我创建了一个shell,然后在shell中打开浏览器,我想将shell移动到屏幕的右上角。我正在尝试使用setBound函数,但它无法正常工作..如何找到右上方屏幕的坐标。 如何将shell设置为特定位置 代码:

{
    final Shell shell = new Shell();
    shell.setLayout(new FillLayout());
    Browser browser = new Browser(shell, SWT.NONE);
     browser.setBounds(  x, y, 200 ,200);
}

1 个答案:

答案 0 :(得分:0)

您可以通过获取Monitor

的界限找到屏幕的右上角
final Monitor monitor = Display.getCurrent().getPrimaryMonitor();
final Rectangle monitorBounds = monitor.getBounds();
final Point topRight = new Point(monitorBounds.x + monitorBounds.width, monitorBounds.y);

如果您想要考虑多个监视器,可以使用Display#getMonitors(),并实施一些逻辑来选择您关注的Monitor

您正准备定位Shell。您可以使用上面的topRight Point,然后减去Shell的宽度以将其保留在屏幕上。或者,您可以使用Shell#setLocation(Point)方法。

例如:

public class ShellLocationTest {

    private final Display display;
    private final Shell shell;

    public ShellLocationTest() {
        display = new Display();
        shell = new Shell(display, SWT.NONE);
        final Point shellSize = new Point(400, 200);
        shell.setSize(shellSize);
        shell.setLayout(new FillLayout());

        final Rectangle monitorBounds = display.getPrimaryMonitor().getBounds();
        final Point shellLocation = new Point(monitorBounds.x + monitorBounds.width - shellSize.x, monitorBounds.y);
        shell.setLocation(shellLocation);
    }

    public void run() {
        shell.open();
        while (!shell.isDisposed()) {
            if (!display.readAndDispatch()) {
                display.sleep();
            }
        }
        display.dispose();
    }

    public static void main(String... args) {
        new ShellLocationTest().run();
    }

}