如何使我的Boot.java类始终位于主类之上,而我的其他进程会在java中造成问题?

如何使我的Boot.java类始终位于主类之上,而我的其他进程会在java中造成问题?,java,linux,swing,user-interface,openjdk,Java,Linux,Swing,User Interface,Openjdk,我有一个主引导,它实际上是一个启动屏幕,它需要始终处于一切之上。但是在我的例子中,它丢失了,main.main得到了第一个位置,甚至没有任何设置总是正确的 如何设置主引导始终在顶部 Boot.java: package main; public class Boot { public static void main(String[] args) { try { String myCmd; //

我有一个主引导,它实际上是一个启动屏幕,它需要始终处于一切之上。但是在我的例子中,它丢失了,main.main得到了第一个位置,甚至没有任何设置总是正确的

如何设置主引导始终在顶部

Boot.java:

package main;

public class Boot
{
    public static void main(String[] args) 
      {
        try {
            String myCmd;      
            // Layer 2 : it can be any other third party Java applications getting launched
            // here its just one example used simple another JWindow...
            myCmd = "java -cp /tmp/dist/AnotherProcess.jar main.main"; 
            Runtime.getRuntime().exec(myCmd);                
            System.out.println("Running: " + myCmd);      
        } catch(Exception e) {   
          System.out.println(e);
        }

        myTimer(); // just a timer counting 40 seconds doing nothing else

        SwingUtilities.invokeLater(new Runnable() {
          public void run() {
            createAndShowGUI();
          }
        });
      }

      private static void createAndShowGUI()
      { 
        window = new JWindow();
        ....
        //setFocusable(true);
        window.pack();
        window.setLayout(new BorderLayout());
        window.setSize(screen.width, screen.height+1); 
        window.setLocationRelativeTo(null);  
        window.setAlwaysOnTop(true);  // Layer 1 
                                      // (always on top) > but it gets behind
                                      // what ever was launched using .exec(..)
        window.setVisible(true);  
      }  
}

您的平台可能不支持它

发件人:

注意:某些平台可能不支持始终在顶部的窗口。到 检测当前平台是否支持始终位于顶部的窗口, 使用Toolkit.isAlwaysOnTopSupported和isAlwaysOnTopSupported。如果 工具箱或此窗口不支持“始终在顶部”模式, 调用此方法无效


JFrame/JWindow不支持将模态正确返回到本机操作系统这是使用以下两种方法取消装饰的JDialog的工作


请注意,即使在其他操作系统(如Windows或其他Linux)中,Windows操作系统也无法阻止键Atl+F4或Ctlr+Alt+F4

。如果我从桌面图标启动应用程序,它就会工作。但当我将它用作X windows系统时,它不起作用。我更新了我的答案。根据您使用的JVM版本,您可能有权检查它在各种模式下是否受支持。您需要在这两种模式下进行测试,看看您是否得到了与IsalwaysOn不同的支持,具体取决于它的启动方式。引用自Java6文档。在我的平台中,始终支持顶部。我想要么是虫子?为什么当我像普通用户一样从桌面图标启动它时它会工作。但当我启动自动启动时,它不起作用。我不知道-如果你在代码中调用isAlwaysOnTopSupported,那么从终端启动时它是否返回true,而从另一个方向启动时返回false?此外,从终端启动时生成的应用程序是否使用XWindows系统以外的其他系统打开,与在窗口管理器中打开时相比?如果是这样,这可能足以解释为什么会发生这种情况。当AWT/Swing与OS windowing toolkit结合使用时,如果您使用两个不同的windowing toolkit,则可能会得到不同的结果,具体取决于它的启动方式。确定-是否可能我的main.main有这个.setBounds0,0,screen.width,screen.height;因此,这个覆盖main.Boot setAlwaysontop方法?当我试图调整/缩放jWindow时,在起诉.setBounds vs setSize时遇到问题。自从我将.setBounds切换到.setSize后,我就能够进行调整大小/缩放。我想这可能就是问题所在。因为当我使用图标/终端启动相同的应用程序时,它工作得非常完美。但它在某些异常情况下不起作用。是的,在我的案例中,挫折确实是个麻烦。问题解决了。非常感谢。