启动文件 = 启动与给定文件关联的程序,并在程序启动时自动打开该文件。
假设我运行 IntelliJ IDEA,我运行我的代码并显示我的程序的主窗口(模式)。我的程序在前台。
然后我从我的程序中启动一个 .pdf 文件(现在这意味着将执行 AcroReader)。AA 将出现在 IntelliJ 前面,但在我的程序后面。
问题
我希望 AA(当然这里只是一个例子)显示在我的程序前面,而不是后面。怎么做?
请注意,这并不意味着我想将我的程序移到后台!
为了启动我使用的文件
java.awt.Desktop.getDesktop().open(new java.io.File(filepath));
我的 GUI 是在 Swing 中完成的。
更新 1
为了排除自定义小部件、事件等的任何影响,我将 JButton 简单地放在我的窗口底部(JDialog)——它在 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 的左上角靠近我的应用程序的右下角。