2014-10-01 2 views
0

JDesktopPane 내에 여러 JInternalFrame이 있습니다. 모든 JInternalFrame은 꾸며지지 않은 상태이며 마우스 리스너를 사용하여 끌기를 관리합니다. 그러나 내부 프레임이 겹치지 않도록해야합니다. 즉 하나의 내부 프레임이 다른 프레임과 교차해서는 안됩니다.JDesktopPane에서 JInternalFrame을 겹치지 않게 만드는 방법

지금까지 getBounds(). intersects() 메소드를 사용하여 두 개의 내부 프레임이 겹쳐져 있는지 확인할 수 있습니다. 그러나 나는 다음에 무엇을해야하는지에 관해서는 단서가 없다.

Google을 사용해 보았지만 만족스러운 답변을 얻지 못했습니다. 해결책을 제안하십시오.

감사합니다.

답변

0

두 답변 :

  1. 당신이 setComponentZOrder (구성 요소 빌려, INT 지수) 함수를 사용하여, 다른 겹치는 내부하는 프레임을 설정하려면.

JDesktopPane desktopPane = new JDesktopPane(); 
contentPane.add(desktopPane); 
JInternalFrame internalFrame = new JInternalFrame("New JInternalFrame"); 
desktopPane.add(internalFrame); 
desktopPane.setComponentZOrder(internalFrame, 0); 

JInternalFrame 구성 요소 수신기에 setComponentZOrder 함수를 추가하십시오.

internalFrame.addComponentListener(new ComponentAdapter() { 
     @Override 
     public void componentMoved(ComponentEvent e) { 
      desktopPane.setComponentZOrder(internalFrame, 0); 
     } 
    }); 

2. 엄격하게 겹치지 않게하려면 별도의 j 프레임에 두십시오.

+1

당신의 대답은 새로운 최상위 창을 만드는 것입니까? 그것은 전혀 당황스럽지 않습니다. 나는 그가 최상위 레벨 윈도우의 모든 내부 프레임을 원한다고 확신한다. –

+0

He/그녀는 JDesktopPane에서 JInternalFrame을 원한다는 것을 분명히 언급했다. 간단히 질문에 답하고 그에 따라 변수를 만들었습니다. 즉, setComponentZOrder를 사용하는 한 JInternalFrame의 조상은 임의적입니다. 조상을 contentPane으로하려면 contentPane.setComponentZOrder (internalFrame, 0);을 실행합니다. – AliAvci

관련 문제