Java启动过程仅在后台进行

问题描述

| 现在,我有一个全屏独占模式的框架,可以控制整个屏幕。面板上有一个按钮,可启动Windows本机计算器程序(仅用于测试目的)。是否有可能使该过程完全在后台启动?现在我有这个:
    this.parent.setAlwaysOnTop(true);
    try {
    Process p = Runtime.getRuntime().exec(\"calc\");
    } catch (IOException e1) {
    ErrorDialog error = new ErrorDialog(\"Error handling your shell action\");
    e1.printStackTrace();
    System.exit(0);
    }
    this.parent.setAlwaysOnTop(false);
这确实可以满足我的需求,但并不能使其美观。它首先“最小化”我的窗口,然后启动calc,然后重新最大化我的窗口。一切都很快发生,但是到处都是东西。是否可以在不触摸主窗口并使它完全无缝的情况下使“ calc”在后台运行?     

解决方法

原则上,至少在X系统上(例如Linux和大多数其他具有GUI的Unix),这是窗口管理器特定的东西。 一些窗口管理器总是在后台,总是在前台启动新程序,甚至要求用户用鼠标绘制窗口区域。其他人尊重计划启动的愿望。 因此,您可以查看正在启动的程序的命令行选项,也许它们具有诸如“最小化启动”之类的选项。 如果您使用的是KDE(和KDE窗口管理器),则可以使用
kstart --onbottom ...
或ѭ2start启动程序,这会将窗口置于堆栈的底部,或最小化启动窗口。 (查看kstart选项,您还想使用
--window
--windowclass
指示窗口。)     ,在Linux上进行测试,也许它不会在那里闪烁。如果没有很多人会在Windows中使用它,则闪烁不是大问题。 我不认为有一种特定于Java的方式来处理此问题,因为您正在启动一个外部进程。如何启动取决于操作系统。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...