2011-05-25 70 views
3

现在我有一个全屏独占模式的框架,它指挥整个屏幕。面板上有一个按钮,用于启动Windows本地计算器程序(仅用于测试目的)。这个过程是否可以在后台完全启动?现在我有这个:仅在后台使用Java启动进程

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”在后台运行而不触及我的主窗口并使其完全无缝?

+0

这是一个仅限Windows的应用程序吗? – 2011-05-25 15:34:18

+0

我目前正在Windows环境中构建,但很可能会在UNIX或Linux环境中使用更多。不过,我希望它与两者兼容。 – n0pe 2011-05-25 15:37:15

+0

Scratch,我刚刚被通知它只是Linux。 – n0pe 2011-05-25 15:38:25

回答

1

这在原理上是一个特定于窗口管理器的事情,至少在X系统上(如Linux和大多数其他具有GUI的Unix)。

某些窗口管理器始终在后台启动新程序,始终在前台,甚至需要用户用鼠标绘制窗口区域。其他人则尊重正在开始的计划的意愿。

因此,你可以看看你正在开始的程序的命令行选项,也许他们有一个像“开始最小化”或类似的选项。

如果您正在使用KDE(和KDE窗口管理器),你可以使用kstart --onbottom ...kstart --minimize ...开始你的计划,这将对堆栈底部的窗口,或启动它最小化。 (看看kstart选项,你也想用--window--windowclass来表示窗口。)

+0

这两个很好的答案,因为我认为你已经解决了这个问题。我将很快在KDE,Gnome以及更多轻巧的窗口管理器上尝试这一点。感谢您的帮助 – n0pe 2011-05-25 16:03:46

1

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

我不认为有一个Java特定的方式来处理这个问题,你正在启动一个外部过程。它如何启动取决于操作系统。