我正在开发一个基于Java swing的应用程序,它将有3个不同的主JFrames,其中的每一个都必须显示在系统中存在的三个显示监视器之一上。此外,应用程序将有能力在特定的显示监视器断开或重新连接时发出警报。
每个main-JFrame必须显示在特定的显示屏上。这是由于这些监视器将要放置的位置。更像是销售点场景,其中一个监视器可以显示要销售的东西--一个监视器可以显示销售人员,另一个监视器可以显示客户,另一个监视器可以显示安全人员。
现在主要的问题是如何知道哪个显示器是哪个显示器。我通过从Java内部调用一个VBScript来获取每个监视器的序列号,从而解决了这个问题。
但另一个问题是如何在Java中映射监视器的序列号信息。在java语言中,我可以得到的对应于每个监视器的是一个序列号实例,我不知道如何将java.awt.GraphicsDevice - no信息映射到这个实例,因为拥有这些java.awt.GraphicsDevice实例的唯一方法是GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices(),并且这个函数不能确保它会在每次调用该函数时以特定的顺序返回设备。
满怀期待地感谢
发布于 2011-02-14 23:18:15
Java通过一个GraphicsEnvironment和GraphicsDevice对象支持多个监视器。有关更多信息,请查看GraphicsDevice javadoc。
发布于 2011-02-14 23:17:38
GraphicsDevice.getIDString()方法是否为您提供了一个可以与序列号进行比较的稳定值?如果是这样的话,您可以将所有标识的序列号写入一个属性文件,并在每次启动程序时进行比较(如果ID不是序列号)。此属性文件还可以存储每个显示器的位置(左、中、右或上、中、下等)
如果你不能确定id和序列号之间的对应关系,那么只要你看到一个不在你的属性文件中的display id,你就可以触发一个'display setup routine‘。
此例程将提示用户确认显示器型号并输入每个显示器的位置(考虑Win、OS X、Linux等中的显示方向设置)。如果您可以将小部件绘制到特定的显示器上,那么您应该能够收集此信息。此外,如果用户重新排列其显示器的物理位置(可能交换两个显示器的位置),则他们可以手动执行此例程。
https://stackoverflow.com/questions/4993642
复制相似问题