Я использую экранную клавиатуру в Java для SWT и AWT.
Одна важная вещь - переместить клавиатуру в положение, в котором может отображаться выбранное текстовое поле, а не за экранной клавиатурой.
Для AWT я могу определить положение текущего выбранного компонента с помощью
Component owner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner();
if (owner == null) {
return;
}
Point ownerLocation = owner.getLocationOnScreen();
Dimension ownerSize = owner.getSize();
Как я могу реализовать ту же логику в SWT?
Я получаю текущий выбранный виджет, добавляя focuslistener в очередь событий SWT. Но когда я звоню
Point location = new Point(mTextWidget.getLocation().x, mTextWidget.getLocation().y);
Dimension dimension = new Dimension(mTextWidget.getSize().x, mTextWidget.getSize().y);
Я получу положение относительно родительского композита.
Как узнать местоположение специального виджета, относящегося ко всему экрану?