当前位置: 首页 > 面试题库 >

通过Java确定Windows显示编号和/或布局

澹台承
2023-03-14
问题内容

我有一个全屏Java应用程序,它将在Windows
7计算机上的8显示器数字标牌类型显示器上运行。我需要能够在特定的物理监视器上显示内容。理想情况下,我希望显示器在“显示器属性”->“设置”中按1-8顺序排列,但是许多拔出/插入和重新排序的尝试均无法通过“显示器属性”->“设置”使物理监视器以任何确定的顺序出现。我可以对其重新排序,但是当我的java程序在显示器上检索信息时,它不在Windows配置它们的布局/顺序中。

GraphicsEnvironment ID返回诸如Device0和Device1之类的字符串,但是它们与Windows
Display编号不匹配,如在Display属性中看到的那样。例如,如果布局为7,4,1,2,3,4,5,6我仍然返回Device0,Device1
…,其中Device0对应于已标识的屏幕1(不是7,它是左侧的第一个屏幕)。有没有一种方法可以查询操作系统以确定显示器的布局和/或某种其他技术来在特定的物理监视器上全屏显示?


问题答案:

您可以获得相对于大型虚拟桌面的屏幕边界:

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
for (GraphicsDevice gd : ge.getScreenDevices()) {
    Rectangle bounds = gd.getDefaultConfiguration().getBounds();
    System.out.println(bounds.toString());
}

对于我的设置,这给出了:

java.awt.Rectangle[x=0,y=0,width=1280,height=1024]
java.awt.Rectangle[x=1280,y=304,width=1280,height=720]

您可以使用此信息确定其顺序。例如,如果您完全确定显示器在一个不错的网格中,则可以在右上方的显示器上全屏显示,如下所示:

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gdUpperRight = null;
Rectangle bUpperRight = null;
for (GraphicsDevice gd : ge.getScreenDevices()) {
    Rectangle b = gd.getDefaultConfiguration().getBounds();
    if (bUpperRight == null || b.x > bUpperRight.x || b.y > bUpperRight.y) {
        bUpperRight = b;
        gdUpperRight = gd;
    }
}

gdUpperRight.setFullScreenWindow(myFrame);


 类似资料:
  • 问题内容: 我想知道自用户上次敲键或移动鼠标以来已经有多长时间了- 不仅在我的应用程序中,而且在整个“计算机”(即显示器)上,以便猜测他们是否仍在计算机,并且能够观察屏幕上弹出的通知。 我只想从(Py)GTK +进行此操作,但是我可以调用特定于平台的函数。理想情况下,我想调用已经从Python包装的函数,但是如果不可能,只要我知道我真正要寻找的是什么,我就不需要C或代码。 在Windows上,我认

  • 我有一个缓冲区与字符编码在Windows 1252。然而,当我用适当的编码创建一个新的字符串时,而不是预期的结果,我经常会得到询问标记,例如。 因此,系统应在其上方显示带“^”的“u”字符。而是显示“?”。 任何想法?

  • 问题内容: 我当前正在编写一个程序,其中用户必须输入10个数字,然后输出将是最高数字和最低数字。我的代码有问题,但找不到。 问题答案: 以不同的方式初始化值: 如果将它们都初始化为零,则永远不会有小于零的“最高”值或大于零的“最低”值

  • 问题内容: 如何确定OrganizationUnit(from )的绝对ID ?当我从树中选择一个节点时,organizationUnit应该显示选定的节点。我不能使用相对ID,因为p:ajax元素与organizationUnit组件不在同一命名容器中。在这种情况下,我需要使用绝对ID。使用Firebug时,组件的ID为。这不是组件的绝对ID吗? 编辑1 custom:include的配置如下:

  • 我的应用程序发出通知。通过点击通知,需要启动app或将其带到前台。通知的意图如下: 在我的应用程序中,我想确定它是通过通知点击启动的还是显示在前面的,所以我在那里使用了putExtra。然后在MainActivity的onResume中检查意图数据。这工作很好,是应用程序启动的通知点击。 做这件事的正确方法是什么?

  • 我试着找到联系人的号码 我有以下内容: 或者,如果不可能在每个独立的字段上显示,则至少在“联系人”部分上显示一个不同的编号,如第3个联系人: 联系人的XSD类型如下所示: 包含XSD联系人的我的XSD类型(AdminTharkeholder)如下所示: