如何解决Java Toolkit获取第二屏幕大小
| 我的计算机上插入了两个屏幕,并且想知道JFrame或Toolkit中是否可以检测窗口在哪个屏幕上? 我有以下代码:java.awt.Toolkit.getDefaultToolkit().getScreenSize();
哪个获取主屏幕的屏幕尺寸,但是如何获取第二个屏幕的尺寸或检测该窗口位于哪个屏幕上?
解决方法
您应该看一下GraphicsEnvironment。
特别是
getScreenDevices()
:
返回所有屏幕GraphicsDevice对象的数组。
您可以从那些GraphicDevice对象中获取尺寸(通过getDisplayMode
间接获得)。 (该页面还显示了如何在特定设备上放置框架。)
您可以通过getGraphicsConfigration()
方法从JFrame到其设备,该方法返回一个具有getDevice()
的GraphicsConfiguration。 (使用ѭ5probably方法可以区分屏幕。)
, 在StackOverflow上检出此线程。 OP中的代码使用以下代码:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
for(GraphicsDevice curGs : gs)
{
GraphicsConfiguration[] gc = curGs.getConfigurations();
for(GraphicsConfiguration curGc : gc)
{
Rectangle bounds = curGc.getBounds();
System.out.println(bounds.getX() + \",\" + bounds.getY() + \" \" + bounds.getWidth() + \"x\" + bounds.getHeight());
}
}
输出为:
0.0,0.0 1024.0x768.0
0.0,0.0 1024.0x768.0
1024.0,0.0 1024.0x768.0
因此,您可以看到它返回了两个屏幕。他有两个1024x768的屏幕,彼此相邻放置。
可以优化代码,因为您只需要宽度和高度:
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
for(GraphicsDevice curGs : gs)
{
DisplayMode dm = curGs.getDisplayMode();
System.out.println(dm.getWidth() + \" x \" + dm.getHeight());
}
, 如果使用此处显示的代码,则可以遍历系统中的所有ѭ9并获取其尺寸。假设您可以在特定的GraphicsDevice上创建JFrame,则还可以通过获取JFrame的窗口并调用http://download.oracle.com/javase/6/docs/api/来获取JFrame所在的特定GraphicsDevice。在窗口上执行java / awt / Window.html#getGraphicsConfiguration(),然后在其上调用calling10。
, 直接找到代码,试试这个:)
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
for (int i = 0; i < gs.length; i++) {
System.out.println(gs[i].getDisplayMode().getWidth()+\" \"+gs[i].getDisplayMode().getHeight());
//System.out.println(java.awt.Toolkit.getDefaultToolkit().getScreenSize());
// to check default resolution of the device
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。