我希望我的Java程序具有两种显示模式:GUI界面和命令行界面。如果在Windows、OS X或其他图形化环境中运行程序,则应该获得GUI界面,但如果通过SSH运行程序,则应该获得命令行界面。
如何检测是否可以显示GUI界面,或者是否应该使用命令行界面?
我希望我的Java程序具有两种显示模式:GUI界面和命令行界面。如果在Windows、OS X或其他图形化环境中运行程序,则应该获得GUI界面,但如果通过SSH运行程序,则应该获得命令行界面。
如何检测是否可以显示GUI界面,或者是否应该使用命令行界面?
您实际上有两个问题:
1)检查您是否在无图形界面的(headless)环境下运行。请检查此方法:
if (GraphicsEnvironment.isHeadless()) {
// non gui mode
} else {
// gui mode
}
2) 检查你正在运行的操作系统:
System.getProperty("os.name")
然而,即使在无界面环境下操作,第二个问题仍将返回相同的名称。
我建议添加一个命令行选项,确定是使用命令行还是图形用户界面,因为即使在GUI可用的环境中,用户可能也希望使用命令行接口。
您还可以使用System.console()检查控制台设备是否可用。
我正在寻找相同的解决方案,最终想到了使用参数,这样当我从命令行运行程序时,参数的长度就会有所不同。
if(args.length > 0) {
System.out.println("command line mode");
}