我正在开发一个应用程序,它可以为用户获取多个显示器的宽度,假设他们的顶部没有任何显示器,然后为他们提供多个按钮/框架,这样他们就可以根据自己的意愿屏蔽任何显示器。
我的问题都很好,除了位置兼容性的东西。如果有人有4个1920宽度的监视器,我如何将我的参考/起始帧定位在最左侧的监视器上,以便我可以说“继续1920像素,制作一帧,…”?您可能会想“使用setLocationToFull,但它是如何工作的??你会认为它只是中间的显示器,长度/2;但是中间监视器是什么!?它不能是totalscreenslength/2,因为这意味着程序在两个监视器之间被一分为二(所以它很可能是主操纵器的中间部分)。不使用任何设置位置,程序位于主监视器的左上角。。。。但是什么是主监视器??
如果我知道java是如何计算哪个监视器是“主监视器”的,那就解决了我的问题(不,只知道主监视器的分辨率) Toolkit.getScreenSize()
没有足够的信息)。
//creating invis black frames
for(int c=0;c<inArr.length;c++){
int xLoc=0;
for(int i=0;i<c;i++){
/**/ xLoc+=resList[i];
}System.out.println(xLoc);
JFrame blackOut=new JFrame();
blkList.add(blackOut);
blackOut.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
blackOut.getContentPane().setBackground(Color.BLACK);
blackOut.setUndecorated(true);
blackOut.setSize(resList[c],5000);
/**/blackOut.setLocation(xLoc-1280,-2000);
blackOut.setVisible(false);
}
这是使程序正常工作的代码,因为它是为我的128019201440设置而硬编码的 blackOut.setLocation(xLoc-1280,-2000);
我必须知道起始帧的确切位置,这样我可以将帧移到左侧,这样“缩放”就可以工作了。这就是这里发生的情况:帧从中间1920监视器的左上角开始,因此我将帧向左移动1280像素,使其位于最左侧监视器的左上角。
抱歉,如果这太冗长,只想提供足够的细节。此外,最近发现了这一点,并查阅了其文档,但我不知道如何使用这些数据,也不确定它是否能够为我提供必要的信息(知道什么是主监视器,并且能够区分监视器,即使它们的分辨率相同)
1条答案
按热度按时间0kjbasz61#
这可能是部分答案。从您的链接发现中,您可以通过调用
graphicsDevice.getDefaultConfiguration().getBounds()
. 这包括每个屏幕的坐标/偏移以及单个屏幕大小。在实施中GraphicsEnvironment.getScreenDevices()
通过SunGraphicsEnvironment
屏幕设备是通过在屏幕数量上迭代并为每个索引创建一个设备来创建的,该索引将传递给每个设备。