【发布时间】:2021-07-10 05:13:33
【问题描述】:
我正在开发一些应用程序,该应用程序可以获取用户多台显示器的宽度,假设他们顶部没有任何显示器,然后为他们提供多个按钮/框架,以便他们可以关闭他们使用的任何显示器希望。
我的问题 除了位置兼容性之外,一切都很好。 如果有人有 4 个 1920 宽度的显示器,我如何将我的参考/起始帧定位在最左边的显示器上,以便我可以说“继续 1920 像素,制作一个帧,......”? 你会认为“使用 setLocationtoNull,但它是如何工作的??你会认为它只是中间监视器,长度/2;但中间监视器是什么!?它不能是 totalScreensLength/2,因为那会意味着程序在监视器之间分成两半!(所以它很可能是主监视器的中间)。 并且不使用任何 setLocations,该程序位于主监视器的左上方....但是主监视器是什么??
如果我知道 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);
}
这是使程序工作的代码,因为它是针对我的 1280,1920,1440 设置进行硬编码的。
问题出在blackOut.setLocation(xLoc-1280,-2000); 我必须知道起始帧的确切位置,所以我可以将帧移到左边,所以“缩放”有效。这就是这里发生的事情:
帧从我中间的 1920 显示器的左上角开始,所以我将帧向左移动 1280 像素,使其位于我最左边的显示器的左上角。
对不起,如果这太冗长了,只是想提供足够的细节。 另外,recently discovered this 并进入了它的文档,但我不明白我如何使用这些数据,并且不确定它是否能够为我提供必要的信息(知道哪个监视器是主要的,并且能够区分监视器,即使它们的分辨率相同)
【问题讨论】:
标签: java swing jframe location monitor