2012-02-02 1 views
1

나는이 메인을 가지고있다. 실제로 스플래시 화면 인 부트는 항상 모든것 위에 있어야한다. 하지만 내 경우 엔 어떻게 될까요? main.main은 아무 것도없는 첫 번째 위치를 얻습니다. setAlwaysOnTop(true);Java에서 문제를 일으키는 다른 프로세스가있는 곳에서 항상 Boot.java 클래스를 main으로 설정하는 방법은 무엇입니까?

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

답변

1

올바르게 다시이 un_decorated JDialog에 대한 작업 인 기본 OS에 두 가지 방법

에게

공지 사항을 다음과 JFrame의/JWindow의 아무튼의 지원 양상 키 012를 차단할 수 없음 (Windows OS)또는 Ctlr + Alt + F4

+0

OK - 내 main.main에'this.setBounds (0,0, screen.width, screen.height); '가있을 수 있습니까? 따라서 main.Boot setAlwaysontop 메소드를 덮어 씁니까? – YumYumYum

+0

jWindow의 크기를 조정하려고 할 때 .setBounds와 setSize를 고소하는 동안 문제가 발생했습니다. 내가 .setBounds를 .setSize로 바꾼 이후부터는 크기 조절/스케일링을 할 수있었습니다. 어쩌면 그것이 문제 일 수 있습니다. 때문에 아이콘/터미널을 사용하여 내 동일한 응용 프로그램을 실행하기 때문에 완벽하게 작동합니다. 그러나 일부 비정상적인 시나리오에서 작동하지 않습니다. – YumYumYum

+0

예 - 실제로 setBounds가 내 경우에 도청당했습니다. 그것의 해결. 고맙습니다! – YumYumYum

1

그것은 당신의 플랫폼에서 지원되지 않을 수 있습니다. the docs에서

:

참고 : 일부 플랫폼은 맨 앞면 윈도우를 지원하지 않을 수 있습니다. 은 항상 플랫폼이 현재 플랫폼에서 지원하는지 확인합니다. 은 Toolkit.isAlwaysOnTopSupported()isAlwaysOnTopSupported()입니다. always-on-top 모드가 툴킷이나이 윈도우에서 지원되지 않으면 이 메서드를 호출해도 아무런 효과가 없습니다.

+0

Windows 또는 기타 Linux와 같은 다른 OS에서도 마찬가지입니다. 데스크톱 아이콘에서 응용 프로그램을 시작하면 작동합니다. 하지만 X 윈도우 시스템으로 사용할 때 작동하지 않습니다. – YumYumYum

+0

답을 업데이트했습니다. 사용중인 JVM 버전에 따라 다양한 모드에서 지원되는지 확인할 수있는 액세스 권한이있을 수 있습니다. 두 모드 모두에서 테스트해야하고 실행 방법에 따라 isAlwaysOnTopSupported()와 다른 것을 얻는 지 확인해야합니다. 견적은 Java 6 문서에서 인용 한 것입니다. – jefflunt

+0

내 플랫폼에서 맨 위가 지원됩니다. 나는 그것도 버그라고 생각 하나? 일반 사용자처럼 바탕 화면 아이콘에서 실행하면 왜 작동합니까? 하지만 부팅 할 때 자동으로 시작될 때 작동하지 않습니다. – YumYumYum

관련 문제