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