Как сделать мой класс Boot.java как основной всегда сверху, где у меня есть другие процессы, вызывающие проблемы в Java? - PullRequest
1 голос
/ 03 февраля 2012

У меня есть main.Boot, который на самом деле является заставкой, должен быть всегда поверх всего.Но в моем случае происходит потеря, и main.main получает первую позицию, которая даже не имеет setAlwaysOnTop(true);

Как я могу установить main.Boot всегда сверху?

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);  
      }  
}

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

JFrame / JWindow не поддерживает модальность правильно обратно в Native OS, это задание для un_decorated JDialog с использованием следующих двух методов

Обратите внимание, что невозможно (ОС Windows) заблокировать клавиши Atl + F4 или Ctlr + Alt + F4

1 голос
/ 03 февраля 2012

Может не поддерживаться на вашей платформе.

Начиная с документы :

Примечание: некоторые платформы могут не поддерживатьвсегда на окнах.Чтобы определить, поддерживаются ли постоянно открытые окна текущей платформой, используйте Toolkit.isAlwaysOnTopSupported() и isAlwaysOnTopSupported().Если режим «всегда сверху» не поддерживается инструментарием или для этого окна, вызов этого метода не имеет никакого эффекта.

...