Вопрос

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

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

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

Toolkit.getDefaultToolkit()

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

Вы знаете, как я могу определить монитор, на котором показан JFrame?

Java-Версия 1.4 Windows XP

Спасибо

Это было полезно?

Решение

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

Для АВТ:

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

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
}

Для СВТ:

Это просто выпад из моего исходного кода.вы должны спросить, не являются ли возвращаемые значения 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;
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top