2012-05-30 1 views
0

JTable을 삭제 한 후 JInternalFrame에 초점을 맞추는 데 간단한 (문제가 아닌) 문제가 있습니다.Window에서 포커스 요청 중

//I created a table, set it to visible, gave it focus. 
list.dispose(); //I did what I wanted with the table and I dispose of it 
screen.setVisible(true); //The screen is already visible. this isn't really needed 
//After I closed table, I want the focus return to the screen (JInternalFrame) 
screen.setFocusable(true); 
screen.requestFocus(); 
screen.requestFocusInWindow(); 
screen.requestFocus(true); 
desktopPane.setSelectedFrame(screen); 

그래서 무슨 일이 일어나고 있는지 이것이다 : 화면 내가 확인하면 포커스가있는 구성 요소를한다는 의미에서 포커스를 취득합니까 - 그것은 나를 돌아 않습니다 - 화면. 하지만 바 (여기서는 적절한 용어가 확실하지 않음) 상단에있는 아이콘, 제목, X 부분을 포함하는 막대는 회색이며 파란색이 아닙니다.

JInternalFrame LOOK을 어떻게 활성화시킬 수 있는지 생각해보십시오.

: http://nexrem.com/projects/FocusDemo.rar 내가 넷빈즈에 신속을 만들어 당신이 할 것은 :

클릭 화면 1을 엽니 다. 그것은 열리고 집중됩니다. JTable을 열려면 클릭하십시오. 그것은 열리고 초점을 맞 춥니 다. Screen1 포커스를 잃었습니다. Esc를 눌러 JInternalFrame을 닫습니다. 닫히지 만 화면 1에는 포커스가있는 것 같지 않습니다 (시각적으로는 최소한). 나는 그것이 2 JInternalFrames 사이이기 때문에 그것이 포커스 사이클링과 관련이 있다고 의심하고있다.

+2

요청을 이벤트 스레드에 대기 중이라면 어떻게해야합니까? 또한 적절한 정답을 얻지 못하면 [sscce] (http://sscce.org) 작성 및 게시를 고려하십시오. –

+0

@HovercraftFullOfEels 요청한 것을 수행하는 방법이 확실치 않지만 NetBeans 프로젝트 링크를 포함하도록 게시물을 편집했습니다. 나는 빠른 데모를 만들었다. toFront와 함께 –

답변

3

당신은 screen.setSelected(true);을 찾고있다. (나는 당신의 코드에서 시도해 보았고, 지금은 작동한다). 자신이 무엇을 의미하는지 @HFOE 제안에 관해서는

는 다음과 같이 수행 하였다 :

SwingUtilities.invokeLater(new Runnable() { 
    public void run() { 
     screen.requestFocus(); 
     screen.requestFocusInWindow(); 
     screen.requestFocus(true); 
    } 
}); 

을하지만 난이 상황을 개선 모르겠습니다.

+0

일을 할 수 있습니다 – mKorbel

+0

설명과 올바른 해결책 주셔서 감사합니다. –