【问题标题】:Java start process in background onlyJava 仅在后台启动进程
【发布时间】:2011-05-25 15:27:19
【问题描述】:

现在我有一个处于全屏独占模式的框架,它控制整个屏幕。该面板有一个按钮,用于启动 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”在后台运行而无需触摸我的主窗口并使其完全无缝?

【问题讨论】:

  • 我目前正在 Windows 环境中构建,但它可能会更多地用于 UNIX 或 Linux 环境中。但是,我希望它与两者兼容。
  • 算了,我刚刚被告知它仅适用于 Linux。

标签: java swing process focus fullscreen


【解决方案1】:

原则上这是一个窗口管理器特有的东西,至少在 X 系统上(如 Linux 和大多数其他带有 GUI 的 Unix)。

一些窗口管理器总是在后台启动新程序,总是在前台,甚至要求用户用鼠标绘制窗口区域。其他人尊重正在启动的计划的意愿。

因此,您可以查看正在启动的程序的命令行选项,也许它们有“最小化启动”之类的选项。

如果您使用 KDE(和 KDE 窗口管理器),您可以使用 kstart --onbottom ...kstart --minimize ... 来启动您的程序,这会将窗口置于堆栈的底部,或者将其最小化。 (查看 kstart 选项,您还需要使用 --window--windowclass 来指示窗口。)

【讨论】:

  • 两个很好的答案,因为我认为你已经解决了这个问题。我将很快在 KDE、Gnome 和一些更轻量级的窗口管理器上尝试这个。感谢您的帮助
【解决方案2】:

在 Linux 中测试一下,也许它在那里不闪烁。如果没有多少人会在 Windows 中使用它,那么闪烁应该不是一个大问题。

我认为没有特定于 Java 的方法来处理这个问题,您正在启动一个外部进程。它的启动方式取决于操作系统。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-23
    • 2018-08-05
    • 1970-01-01
    相关资源
    最近更新 更多