2012-07-19 3 views
1

두 개의 개별 응용 프로그램이 있습니다. 각 응용 프로그램은 각각 자체 JVM에서 실행됩니다. App1은 ServerSocket을 구현하고 요청을 기다립니다. App2는 Socket을 구현하고 App1에 요청을 수행합니다.자바 : JFrame 포커스를 다른 JFrame으로 전송

App1이 요청을 수행하고 (App1에 포커스를 전송 한 후) 또는 App1이 요청을 완료하고 포커스를 부여한 후에 App1이 활성 프로세스/창이되어야합니다.

어떻게하면됩니까?

App1에서 Window.toFront() 메서드를 사용하려고했지만 작업 표시 줄에 깜박이는 막대가 나타납니다.

+0

:이 기능은 Windows 7에서 작동하는 것 같다 다른 질문에서

. 이러한 애플리케이션을 별도의 JVM에서 실행해야하는지 100 % 확신합니까? –

+0

질문에 sigs와 같은 소음을 포함하지 마십시오. –

+0

안녕하세요. 회신 해 주셔서 감사합니다. 두 응용 프로그램은 모두 독립적으로 실행됩니다. App1은 필자가 회사에 쓴 어플리케이션이며, App2는 일부 파트너가 작성한 타사 소프트웨어입니다. App1은 중기에 App2로 대체됩니다. 따라서 현재 우리 요원은 App2와 함께 작업하고 필요한 경우 App1에서 추가 정보를 조회합니다. 워크 플로를 단순화하기 위해 App2에서 조회를 실행할 수 있습니다. 따라서 상사는 App2 (소켓 패턴 덕분에 잘 작동 함)에서 조회를 수행 한 다음 원하는 정보를 표시하기 위해 App2에서 App1으로 포커스를 전송할 수있는 솔루션을 원했습니다. –

답변

1

toFront()와 조합하여 requestFocusInWindow() 또는 requestFocus()을 시도 할 수 있습니다. 그러나 이것이 성공할 것이라는 보장은 없습니다. 포커스 동작은 특정 확장에 따라 플랫폼에 따라 다릅니다. 이 솔루션은 다음 플랫폼에 의존 될 것입니다하지만 당신은이 문제를 해결하기 위해 JNI 또는 JNA를 사용해야 할 수 있습니다

private void BringToFront() { 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      if(jFrame != null) { 
       jFrame.toFront(); 
       jFrame.repaint(); 
      } 
     } 
    }); 
} 
+0

내 답변을 약간 편집했지만 OS에 따라 JFrame에서 구성 요소의 포커스를 요청하면 창을 앞에 놓을 수 있습니다. 나는 그것이 Windows XP에서 작동하지만 Windows 7에서는 시도한 적이 없다는 것을 알고있다. – Chris911

+0

고마워. Downvote 삭제, upvote 주어진. 이 방법이 효과가 있는지 알아볼 가치가 있습니다. –

+0

안녕하세요. 답장을 보내 주셔서 감사합니다. Windows XP 시스템에서 가능한 모든 조합을 시도했지만 성공하지 못했습니다. 모든 시도는 작업 표시 줄에서 App1의 막대를 강조 표시했습니다. –

관련 문제