1

Linuxボックスで実行されているフルスクリーンのJavaプログラムがあります。プログラムは常に実行されており、Linuxボックスが存在する主な理由です。

ドロップダウンメニューから開くことができるプログラムのPDFヘルプファイルがたくさんあります。ユーザーがヘルプメニュー項目の1つをクリックすると、XPDFを開きます。

    final Runtime rt = Runtime.getRuntime();
    final String cmd = "runxpdf.sh";
    rt.exec(cmd);

これはすべて正常に機能しますが、XPDFビューアの実行中にユーザーがプログラムをクリックすると、プログラムの全画面表示よりも遅れてしまいます。

私たちができることは、XPDFプログラムが閉じられるまで常にトップに保つことです。これは、Javaからプログラムを実行することで実行できますか?

4

2 に答える 2

2

問題は、ウィンドウを上げたままにするようにそのプログラムに指示するために、別のプログラムであるウィンドウマネージャーと通信する必要があることです。

Xウィンドウベースのシステムwmctrlでは、準拠しているウィンドウマネージャーであれば、現在のウィンドウマネージャーにリクエストとクエリを実行するというツールが使用されていました。そのようなツールを使用すると、さまざまな結果が得られました。20ほどのLinuxウィンドウマネージャーの中で、最も人気のあるものはリクエストをよりうまく処理します(おそらくそれが彼らが人気がある理由ですか?)。

デスクトップをウィンドウに切り替え、上げてフォーカスするコマンドは次のとおりです。

wmctrl -i -a <Window Id>

ウィンドウマネージャによって管理されているウィンドウのリストを取得するには

wmctrl -l

これは「常に上」を保証するものではありませんがThread、ウィンドウをチェックして再レイズするためのループを作成することができます。

Windowsソリューションに関しては、他の誰かがそれについてコメントする必要があります。

于 2012-07-24T16:27:36.110 に答える
2

少し接線ですが、試してみる価値があると思います-Javaから直接PDFを表示することを検討しましたか?次に、たとえばJFrameのsetAlwaysOnTop(boolean)を使用して、ウィンドウをより細かく制御できます。ここでは、いくつかのPDF表示オプションについて説明します

于 2012-07-24T20:08:05.827 に答える