【问题标题】:Java identifying more than 2 monitorsJava 识别超过 2 个监视器
【发布时间】:2011-02-14 15:00:11
【问题描述】:

我正在开发一个基于 Java swing 的应用程序,它将 3 个不同的主要 JFrames 并且每一个都必须显示在系统中存在的三个显示监视器之一上。此外,应用程序将能够在特定的显示监视器断开或重新连接时发出警报。

每个 main-JFrame 必须显示在特定的显示屏上。这是由于这些监视器将要放置的位置。更像是一个销售点场景,其中一个监视器可以为销售人员显示内容,为客户显示其他内容,为安全人员显示其他内容。

现在的主要问题是如何知道哪个显示器是哪个。我通过从 Java 中调用 VBScript 来获取每个监视器的序列号,从而解决了这个问题。

但还有一个问题是如何在Java中映射监视器的序列号信息。在 Java 中,我可以得到与每个监视器相对应的是一个 java.awt.GraphicsDevice 实例,我不知道如何将序列号信息映射到这个实例,因为唯一的方法是让这些 java.awt.GraphicsDevice 实例是 GraphicsEnvironment。 getLocalGraphicsEnvironment().getScreenDevices() 并且此函数不确保每次调用该函数时都会以特定顺序返回设备。

期待中的感谢

【问题讨论】:

标签: java multiple-monitors


【解决方案1】:

Java 通过 GraphicsEnvironment 和 GraphicsDevice 对象支持多个监视器。查看GraphicsDevice javadoc 了解更多信息。

【讨论】:

  • 我已经从属性文件中读取序列号,但是使用 getIDstring 的结果的问题,即使它是稳定的,我仍然无法预先确定哪个序列号对应于哪个 getIDstring 的结果
  • 我想你是想回复我的回答,我会更新我的回答以添加另一个建议。
【解决方案2】:

GraphicsDevice.getIDString() 方法是否为您提供了一个可以与序列号进行比较的稳定值?如果是这样,您可以将所有识别的序列号写入属性文件,并在每次程序启动时进行比较(如果 ID 还不是序列号)。该属性文件还可以存储每个显示器的位置(左、中、右或上、中、下等)

如果您无法确定 id 和序列号之间的对应关系,您可以在看到不在属性文件中的显示 id 时触发“显示设置例程”。

此例程将提示用户确认显示器型号并输入每个显示器的位置(考虑 Win、OS X、Linux 等中的显示器方向设置)。如果您可以将小部件绘制到特定显示器,您应该能够收集此信息。此外,如果用户重新排列显示器的物理位置(可能交换两个显示器的位置),那么他们可以手动执行此例程。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-10
    相关资源
    最近更新 更多