在
Windows中,每个屏幕都有一个编号或身份,我认为这与我物理连接显示器电缆的方式有关.我的问题的关键是我可以重新配置这些屏幕,但他们会保持自己的身份.
Java对GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()的调用会给我一个GraphicsDevice数组.
如何将数组中的屏幕顺序与Window编号相关联?我对跨平台解决方案感兴趣.
例如,我的Windows配置如下所示
但返回的数组看起来像这样
screens[0] = relates to screen 2
screens[1] = relates to screen 3
screens[2] = relates to screen 1
注意我想要使用的代码就是这样
frame.setLocation(
screens[i].getDefaultConfiguration().getBounds().x, frame.getY());
我应该是物理数字,而不是数组中的位置(或者如果你看到我的意思,它的映射).
最佳答案 您可以按位置对屏幕设备进行排序:
Arrays.sort(screens, new Comparator<GraphicsDevice>() {
public int compare(GraphicsDevice screen1,
GraphicsDevice screen2) {
Rectangle bounds1 = screen1.getDefaultConfiguration().getBounds();
Rectangle bounds2 = screen2.getDefaultConfiguration().getBounds();
int c = bounds1.y - bounds2.y;
if (c == 0) {
c = bounds1.x - bounds2.x;
}
return c;
}
});