检查系统/计算机是否有可用的显示或图形输出

时间:2015-02-23 10:58:45

标签: java javafx-8

更新:作为标记重复,我只是想提一下,这似乎是重复的,但其他提到的问题的答案并不完全正确。而是参考下面接受的答案。 isHeadless 在某些情况下会返回意外的真实。

它有点奇怪,但最近我构建了一个非常简单的java应用程序,它可以在控制台/终端模式或JavaFX UI模式下运行。

但是,在没有连接任何显示器的远程计算机上使用它时。我收到一个错误,即这个JavaFX UI应用程序无法在没有显示的系统上启动,这很明显。

为了解决这个问题,我一直在寻找一种强大的方法来检测系统是否附加了任何显示器,并且它可以启动JavaFX应用程序,该应用程序必须是独立于平台的解决方案,因为它可能是Windows或Ubuntu / Linux或Mac系统。

应用程序的结构:

主控制台应用,根据输入参数在内部执行控制台应用 UI应用

因此,如果给出任何参数,则在控制台模式下运行,或者如果没有参数则在UI模式下运行。 这是我想检测我的主控制台应用程序中是否有可用显示的地方,如果缺少显示,它甚至不会尝试运行UI应用程序。

任何想法我们如何才能在正确的方向上实现这个或建议会很棒。

1 个答案:

答案 0 :(得分:1)

我认为你可以使用java.awt.GraphicsEnvironment

GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();

将返回包含所有可用屏幕的数组。如果此数组为空,则没有监视器。

编辑:关于使用isHeadless(),您可以查看How to determine if GraphicsEnvironment exists