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 - Fatal编程技术网

以不可见模式启动java应用程序

以不可见模式启动java应用程序,java,user-interface,Java,User Interface,根据命令行参数或虚拟机参数,我希望应用程序以不可见模式启动。它在这两种情况下都做相同的事情,只是在不可见模式下它根本不显示任何东西 我可以使用JFrame.setVisible(false)使主程序窗口不可见。然而,我必须找到代码中的每一个地方,例如打开一个警告消息弹出窗口等等(有很多这样的地方!) 有没有更通用的方法?可能有点像无头模式(当然抛出HeadlessExceptions,这不是我想要的) 谢谢 像这样做 public static void main(String[] args){

根据命令行参数或虚拟机参数,我希望应用程序以不可见模式启动。它在这两种情况下都做相同的事情,只是在不可见模式下它根本不显示任何东西

我可以使用
JFrame.setVisible(false)
使主程序窗口不可见。然而,我必须找到代码中的每一个地方,例如打开一个警告消息弹出窗口等等(有很多这样的地方!)

有没有更通用的方法?可能有点像无头模式(当然抛出
HeadlessExceptions
,这不是我想要的)

谢谢

像这样做

public static void main(String[] args){
    boolean gui = true;
    for (String s : args){
        if (s.equals("--nogui")){
            // Do not create GUI
            gui = false;
            break;
        }
    }
    if (gui){
        // Create the gui
    }
}

您的应用程序体系结构是什么样子的?如果它被干净地分隔开,则创建一个新的视图图层,该图层不做任何操作


如果它纠结在一起,最好的选择是取消纠结,然后创建一个新的不起任何作用的视图层。

如果表示层与业务逻辑紧密耦合,则必须签入所有表单和其他可见类。您应该解耦您的应用程序,这样做就像调用一个方法一样简单


在其他情况下。。。你会有一堆
if-else如果

你把业务逻辑和显示逻辑分开了吗?如果是这样,添加一些标志以不激活显示逻辑应该很简单。首先不要创建JFrame,那么就不需要使其不可见。没错,我必须更好地解耦视图和逻辑。所以我猜没有这样的配置属性?!以不完全无头模式运行?不。特别是如果你使用弹出窗口,因为系统会期望它们产生结果,这是永远不会发生的。现在来看看一些可怕的“解决方案”,你真的不应该使用它们。您可以将CHARVA的Swing/AWT切换为out,将standard切换为devnull。或者,您可以(如果在Linux上)创建一个虚拟帧缓冲区,并在上面抛出您的UI。