2014-11-28 3 views
1

그래서 두 개의 JFrames - J1과 J2가 있습니다. J2는 J1의 버튼을 클릭하여 시작됩니다. 또한이 버튼을 누르면 J1의 다른 모든 컨트롤 (JTextFields 및 JButtons 등)이 비활성화됩니다. 모든 컨트롤을 사용하지 않으려면 DisableControls()라는 함수가 있어야합니다. 이 함수는 J2를 실행하기 위해 J1에서 버튼을 누르면 호출됩니다.DISPOSE_ON_CLOSE를 호출 할 때 함수를 실행하십시오.

그래서 J2가 DISPOSE_ON_CLOSE를 사용하여 닫히면 다른 컨트롤 인 EnableControls()를 호출하여 모든 컨트롤이 다시 활성화 된 상태가되도록합니다.

내 질문은 - 사용자가 J2에서 닫기 버튼을 누르면 -EnableControls() 함수를 호출 할 수 있습니까?

감사

답변

0

당신은 WindowListener (documentation가) 함수 close 이벤트를 감지하고 전화를 사용할 수 있습니다

import java.awt.event.WindowAdapter; 
import java.awt.event.WindowEvent; 


//in J2 constructor 
addWindowListener(
    //WindowAdapter implements WindowListener and lets us only override the methods we need 
    new WindowAdapter() 
    { 
     public void windowClosing(WindowEvent e) 
     { 
      //Call your function here 
      J1.EnableControls(); 
     } 
    }); 

EnableControls가 J1에 대해 정의하는 방법이라고 가정을, 당신은을 유지 할 수 있습니다 J2 클래스의 J1에 대한 참조가 아직없는 경우

3

그래서 2 개의 JFrames - J1과 J2가 있습니다. J2는 J1의 버튼을 클릭하여 시작됩니다. 또한이 버튼을 누르면 J1의 다른 모든 컨트롤 (JTextFields 및 JButtons 등)이 비활성화됩니다.

두 프레임을 사용하지 마십시오. 대신 두 번째 프레임은 모달 JDialog 여야하므로 부모 프레임에서 컨트롤을 사용하지 않도록 설정할 필요가 없습니다.

참조 : The Use of Multiple JFrames: Good or Bad Practice?

관련 문제