Java 检测显示窗口的监视器
我有主应用程序JFrame窗口,它可以包含不同的组件。当用户选择一个可编辑的文本字段时,我打开一个自我实现的屏幕。OSK也是一个JFrame窗口 当用户将主窗口拖动到另一个监视器时,OSK也应显示在同一个监视器上。为此,我必须检测显示器的主框架显示 我试图找到一种方法Java 检测显示窗口的监视器,java,windows,jframe,toolkit,multiple-monitors,Java,Windows,Jframe,Toolkit,Multiple Monitors,我有主应用程序JFrame窗口,它可以包含不同的组件。当用户选择一个可编辑的文本字段时,我打开一个自我实现的屏幕。OSK也是一个JFrame窗口 当用户将主窗口拖动到另一个监视器时,OSK也应显示在同一个监视器上。为此,我必须检测显示器的主框架显示 我试图找到一种方法 Toolkit.getDefaultToolkit() 但是找不到什么东西 您知道我如何检测显示JFrame的监视器吗 Java版本1.4 视窗XP 如果所有可用显示器的解决方案都相同,请回答 对于AWT: 每个控件都有getM
Toolkit.getDefaultToolkit()
但是找不到什么东西
您知道我如何检测显示JFrame的监视器吗
Java版本1.4
视窗XP
如果所有可用显示器的解决方案都相同,请回答 对于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
}
Monitor-widgetMonitor=mTextWidget.getMonitor();
矩形monitorRect=widgetMonitor.getBounds();
如果(监视器显示x<0){
//显示在左监视器中,从主监视器开始
}
如果(monitorRect.x>monitorRect.WITH){
//显示在右监视器中,从主监视器开始
}
对于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;
}
int monitorWidth=0;
GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevices[]screenDevices=ge.getScreenDevices();
如果(screenDevices.length>0){
monitorWidth=screenDevices[0]。getDisplayMode().getWidth();
}
Point ownerLocationOnScreen=owner.getLocationOnScreen();
int screenMovingX=0;
if(所有者位置屏幕x<0){
screenMovingX=-监视器宽度;
}
if(所有者位置屏幕x>监视器宽度){
screenMovingX=监视器宽度;
}