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

标签 java user-interface swing command-line-interface

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

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

最佳答案

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

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

但是,如果我是您,我会将其设为命令行开关,以便您也可以在图形环境中使用控制台模式。为了最大程度地方便起见,这将是一个非强制选项,默认为某种“自动”选项,该选项使用 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();
}

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

因此,使用 java YourMainClassjava YourMainClass -mode auto 启动您的程序,它会根据您的需要做出有根据的猜测,您需要 GUI 还是控制台,请使用 java YourMainClass -mode console 强制控制台模式,或 java YourMainClass -mode gui 强制 GUI 模式。

关于java - 在控制台模式和图形模式之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1254185/

相关文章:

java - 通过 CLI 执行 testng.xml 时出错 : Could not find or load main class org. testng.TestNG

user-interface - 开发人员易于理解的UI技巧

java - 为什么会发生这种情况? (使用数组、增量)

java - 发送文件时无法更新 GUI

java - IP 地址/前缀的正则表达式

java - 如果一个线程在调用 Object.wait() 之前被中断,该线程是否会在抛出 InterruptedException 之前释放锁

swing - 如果过滤时未找到条目,则在 JTable 行内显示 "no rows found"

java - 使用 setAutoCreateRowSorter(true) 时获取列排序顺序?

java - 我应该如何编写 .i 文件以用 Java 或 C# 包装回调

android - iOS 选项卡栏 Controller 的最佳 Android 等价物