如何检测图形界面是否受支持?

2022-09-01 18:54:22

我需要我的Java程序有两种显示模式:GUI界面和命令行界面。如果我在Windows,OS X或其他图形环境中运行它,我应该得到GUI界面,但是如果我通过SSH运行它,我应该得到命令行界面。

如何检测是否可以显示 GUI 或是否应使用命令行界面?


答案 1

您实际上有两个问题:

1)检查您是否在无头环境(无图形)中运行。检查此方法:

if (GraphicsEnvironment.isHeadless()) {
     // non gui mode
} else {
     // gui mode
}

2)检查您正在哪个操作系统下运行:

System.getProperty("os.name")

但是,第二 (2) 个问题将返回相同的名称,即使您在无外设环境中操作也是如此。


答案 2

dacwe和vitaut都是对的。我只想添加一个建议。在设计应用程序时,应使用 MVC(模型-视图-控制器)模式。因此,如果它在UI模式下运行,则使用UIView,否则使用控制台视图。

Dacwe向您推荐如何自动决定使用哪种模式。由于Java是跨平台语言,我认为操作系统的名称与你无关。系统具有图形环境的事实更相关,因此请使用.GraphicsEnvironment.isHeadless()

System.console()将帮助您创建外壳控制的应用程序。


推荐