Java SWT Высота заголовка / строки заголовка оболочки

Как определить высоту строки заголовка окна приложения в приложении Java SWT?

Поскольку Java не зависит от платформы, мне нужно найти способ Java.

В качестве побочного вопроса, находится ли информация о высоте заголовка / панели заголовка в том же месте, что и другие показатели системы / окна?

Я попытался выполнить поиск по словам «строка заголовка» и «строка заголовка», но ничего не увидел.


person Sarah Weinberger    schedule 13.05.2014    source источник


Ответы (1)


По сути, вы хотите рассчитать разницу в высоте между «границами» вашего Shell и «клиентской зоной» Shell:

public static void main(String args[])
{
    Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("StackOverflow");
    shell.setLayout(new FillLayout());

    Button button = new Button(shell, SWT.PUSH);
    button.setText("Calculate");
    button.addListener(SWT.Selection, new Listener()
    {
        @Override
        public void handleEvent(Event arg0)
        {
            Rectangle outer = Display.getCurrent().getActiveShell().getBounds();
            Rectangle inner = Display.getCurrent().getActiveShell().getClientArea();

            System.out.println(outer.height - inner.height);
        }
    });

    shell.pack();
    shell.setSize(400, 200);
    shell.open();
    while (!shell.isDisposed())
    {
        if (!shell.getDisplay().readAndDispatch())
            shell.getDisplay().sleep();
    }
}

Напечатает 31 (пикселей) на моем ноутбуке под управлением Linux Mint.

person Baz    schedule 13.05.2014
comment
Я добавлю, что приведенный выше результат возвращает строку заголовка вместе с высотой верхней и нижней границы. Высота панели заголовка будет тогда: cyCaptionBar = outer.height - inner.height - shell.getBorderWidth () * 2; - person Sarah Weinberger; 13.05.2014