在控制台模式和图形模式之间切换

0 java user-interface swing command-line-interface

我只是想知道是否有某种方法可以在控制台模式和图形模式之间切换.我在秋千上使用java.

我想知道我是否可以在shell中键入内容以进入控制台模式,然后输入内容以返回桌面.或者,如果我可以在启动时按某个键,或者其他什么.我的想法是让我的服务器以控制台模式运行,但是当我想要更轻松地完成任务时,可以使用桌面.

gus*_*afc 5

您可以java.awt.GraphicsEnvironment.isHeadless()用来检查运行程序的环境是否支持GUI:

public static void main(String[] args){
    if (GraphicsEnvironment.isHeadless()){
        // Run console mode
    } else {
        // Start in GUI mode
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我是你,我会将其作为命令行开关,这样你也可以在图形环境中使用控制台模式.为了最大的方便,这将是一个非强制性选项,默认为某种"自动"选项,它使用isHeadless检查,如:

public static void main(String[] args){
    final List<String> arguments = Arrays.asList(args);
    final int modeIndex = arguments.indexOf("-mode");
    final String mode = modeIndex == -1 ? "auto" : argument.get(modeIndex);
    if ("auto".equals(mode)) runAuto();
    else if ("console".equals(mode)) runConsole();
    else if ("gui".equals(mode)) runGui();
    else System.err.println("Bad mode: " + mode);
}

private static void runGui(){ ... }
private static void runConsole(){ ... }
private static void runAuto(){
    if (GraphicsEnvironment.isHeadless()) runConsole();
    else runGui();
}
Run Code Online (Sandbox Code Playgroud)

(TODO:添加错误处理,删除魔术字符串文字等)

因此,使用java YourMainClass或启动您的程序,java YourMainClass -mode auto它会有一个有根据的猜测,您是想要GUI还是控制台,用于java YourMainClass -mode console强制控制台模式,还是java YourMainClass -mode gui强制GUI模式.