ファイルを起動 = 指定されたファイルに関連付けられたプログラムを起動し、プログラムの起動時にそのファイルを自動的に開きます。
IntelliJ IDEA を実行するとします。コードを実行すると、プログラムのメイン ウィンドウ (モーダル) が表示されます。私のプログラムはフォアグラウンドにあります。
次に、プログラムから .pdf ファイルを起動します (今のところ、AcroReader が実行されることを意味します)。AA は IntelliJ の前に表示されますが、私のプログラムの後ろに表示されます。
質問
AA (もちろんここでは単なる例です) をプログラムの後ろではなく前に表示したいと思います。どうやってするの?
これは、プログラムをバックグラウンドに移動したいという意味ではありません。
私が使用するファイルを起動するために
java.awt.Desktop.getDesktop().open(new java.io.File(filepath));
私のGUIはSwingで行われます。
更新 1
カスタム ウィジェットやイベントなどの影響を排除するために、ウィンドウ (JDialog) の下部に単純に JButton を配置しました。これは Scala にありますが、この部分は Java 構文に似ています。
var dlg = new javax.swing.JDialog(null,"test",Dialog.ModalityType.DOCUMENT_MODAL);
dlg.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
var button = new JButton("Select Me");
var actionListener = new ActionListener() {
def actionPerformed( actionEvent : ActionEvent) = {
java.awt.Desktop.getDesktop().open(new java.io.File("test.pdf"))
}
};
button.addActionListener(actionListener);
dlg.add(button, BorderLayout.SOUTH);
dlg.setSize(300, 100);
dlg.setVisible(true);
クリックすると、アプリの背後に AA が表示されます。AA の実行には数秒かかるので、ボタンをクリックして、ウィンドウからマウスを離してみました。まったく同じ動作です。
また、AA はウィンドウに対して同じ相対位置に表示され、AA の左上隅はアプリの右下隅近くにあることにも気付きました。