Определить, какой монитор показывает окно - PullRequest
3 голосов
/ 16 января 2009

У меня есть главное окно приложения JFrame, которое может включать в себя различные компоненты. Я открываю встроенную OnScreenKeyboard, когда пользователь выбирает редактируемое текстовое поле. OSK также является окном JFrame.

Когда пользователь перетаскивает главное окно на другой монитор, OSK также должен отображаться на том же мониторе. Для этого мне нужно обнаружить монитор, на котором показан основной JFrame.

Я пытаюсь найти метод в

Toolkit.getDefaultToolkit()

но не смог найти что-то.

Знаете ли вы, как я могу обнаружить монитор, на котором отображается JFrame?

Java-версия 1.4 Windows XP

Спасибо

1 Ответ

5 голосов
/ 16 января 2009

Ответьте, если решение всех доступных мониторов одинаково.

Для AWT :

У каждого элемента управления есть метод getMonitor (), из которого можно получить позицию экрана, как:

Monitor widgetMonitor = mTextWidget.getMonitor();
Rectangle monitorRect = widgetMonitor.getBounds();

if(monitorRect.x < 0){
   // shown in left monitor, starting from the main monitor
}

if(monitorRect.x > monitorRect.width){
   // shown in right monitor, starting from the main monitor
}

Для SWT :

Это просто отрывок моего исходного кода. Вы должны спросить, если возвращаемые значения не равны NULL или что-то вроде этого!

    int monitorWidth = 0;
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice[] screenDevices = ge.getScreenDevices();
    if(screenDevices.length > 0){
        monitorWidth = screenDevices[0].getDisplayMode().getWidth();
    }


    Point ownerLocationOnScreen = owner.getLocationOnScreen();

    int screenMovingX = 0;
    if(ownerLocationOnScreen.x < 0){
        screenMovingX = -monitorWidth;
    }
    if(ownerLocationOnScreen.x > monitorWidth){
        screenMovingX = monitorWidth;
    }
...