Определите, на каком мониторе отображается Окно
-
19-08-2019 - |
Вопрос
У меня действительно есть главное окно 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;
}