Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在控制台模式和图形模式之间切换_Java_User Interface_Swing_Command Line Interface - Fatal编程技术网

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

Java 在控制台模式和图形模式之间切换,java,user-interface,swing,command-line-interface,Java,User Interface,Swing,Command Line Interface,我只是想知道是否有办法在控制台模式和图形模式之间切换。我在swing上使用java 我想知道我是否可以在shell中键入一些内容以进入控制台模式,然后键入一些内容以返回桌面。或者我可以在开机时按一些键,或者别的什么。 其想法是让我的服务器在控制台模式下运行,但当我想更轻松地完成任务时,桌面可用。您可以将项目分为两部分:服务器和GUI。您可以将服务器作为服务(Windows)o守护进程(Linux)运行,当您需要GUI时,必须启动并使用它进行操作 它类似于应用程序,如MLASKY等。在程序中,您可

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

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

您可以将项目分为两部分:服务器和GUI。您可以将服务器作为服务(Windows)o守护进程(Linux)运行,当您需要GUI时,必须启动并使用它进行操作


它类似于应用程序,如MLASKY等。

在程序中,您可以定义隐藏GUI的命令。类似于
gui.setVisible(false)
的东西应该可以做到这一点,它会隐藏gui引用的窗口及其所有元素。

您可以在命令行上传递参数,并在
main(String[]args)
中检查它们。它们将以
args
结束。因此,最简单的方法是检查
args.length>0&&“-c”.equals(args[0])
以告诉程序在控制台模式下运行,并以其他方式打开UI

另一个选项是编写两个
main()
方法(在不同的类中)并使用正确的方法。

您可以使用来检查程序运行的环境是否支持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();
}
publicstaticvoidmain(字符串[]args){
最终列表参数=Arrays.asList(args);
final int modeIndex=arguments.indexOf(“-mode”);
最终字符串模式=modeIndex==-1?“自动”:参数.get(modeIndex);
如果(“auto”.equals(mode))runAuto();
如果(“console.equals(mode))运行console();
else如果(“gui”.equals(mode))runGui();
else System.err.println(“坏模式:+模式”);
}
私有静态无效runGui(){…}
私有静态void runConsole(){…}
私有静态void runAuto(){
如果(GraphicsEnvironment.ishadles())运行控制台();
else runGui();
}
(TODO:添加错误处理、删除魔术字符串文本等)


因此,用
java YourMainClass
java YourMainClass-mode auto
启动程序,它会根据需要猜测您是想要GUI还是控制台,使用
java YourMainClass-mode console
强制控制台模式,或者使用
java YourMainClass-mode GUI
强制GUI模式

您可以创建命令行命令,启动GUI向导,使您能够轻松创建所需的组件/配置,然后使GUI将复杂的指令传递回单个应用程序线程。在使用GUI组件后销毁它是否有用,或者只是隐藏它,这是您必须做出的决定,关于您使用GUI组件的频率