2016-11-30 1 views
0

JSplitPane과 함께 Swing 응용 프로그램이 있으며 창이 최대화되거나 복원되는 즉시 JSplitPane의 너비를 가져 오려고합니다. 하지만 올바른 값을 얻지 못하는 것 같습니다. 항상 JSplitPane의 이전 너비를 반환합니다. 창 상태가 변경된 후의 너비가 아닙니다.Swing windowStateChanged listener는 구성 요소의 이전 속성 값을 반환합니다.

나는 정상 및 최대 MAXIMIZED_BOTH에 대해 evt.getNewState()을 사용하여 유효성을 검사해야한다는 것을 알고 있지만 여기에는 중요하지 않습니다. 최대화 경우 1120 복원하는 경우

addWindowStateListener(new java.awt.event.WindowStateListener() { 
    public void windowStateChanged(java.awt.event.WindowEvent evt) { 
     System.out.println(jsp.getWidth()); 
    } 
}); 

1812를 출력합니다. 나는 또한 몇 가지 다른 구성 요소로 이것을 시도하고 같은 결과로 끝났다. 이 문제를 어떻게 극복 할 수 있습니까?

답변

1

addComponentListener()을 사용하고 JFrame에 대해 componentResized 이벤트를 처리하면이 문제에 대한 해결책을 찾았습니다. 이 이벤트에서 모든 하위 구성 요소가 업데이트되므로 새로운 너비를 얻고 작업을 수행 할 수있었습니다. 아직 완벽하지는 않지만 충분히 가깝습니다. 자세한 내용은 How to Write a Component Listener을 참조하십시오.

관련 문제