2014-02-13 5 views
0

나는 ATM 프로그램을 만들어야하고 앞으로 몇 달 동안 대학을 위해해야 ​​할 미니 프로젝트에 대한 아이디어가있다. 누군가가 도울 수 있는지 궁금한 것이었다. 이 PIN을 입력하는 사용자의 윈도우를 생성하고 입력 버튼을 누르면과 핀이 올 때 (I 배열이자바에서 그 자체의 인스턴스를 닫는 법

public class Main { 
    public static void main(String args[]){ 
     EnteringPin EnterPin = new EnteringPin(); 
     EnterPin.setVisible(true); 
    } 
} 

: 내 메인 클래스에서 나는 EnterPin라는 JFrame의 형태의 인스턴스를 생성 다른 JFrame 형태의 ATM 기본 화면을 엽니 다. 나는 엔터 프라이즈를 닫는 방법을 알고 싶었다. "EnterPin"자체 내에서 그냥 할 수 없어 EnterPin.dispose(); 내가 익숙해있는 것처럼. 나는 넣으면

public class Main { 
    public static void main(String args[]){ 
     EnteringPin EnterPin = new EnteringPin(); 
     EnterPin.setVisible(true); 
     while (EnterPin.open == false){ 
     } 
     EnterPin.dispose(); 
    } 
} 

이 작동 : 나는 주에서 while 루프를 사용할 수 있도록 나는, "열기"라는 EnterPin 내에서 부울을 생성하고 메인 화면 창이 열릴 때 true로 변경 시도했습니다 브레이크 포인트를 while 루프에서 실행하고이 프로그램을 디버깅합니다.하지만 단순히 실행하면 EnterPin 인스턴스가 백그라운드에서 작동합니다. 도움을 주시면 감사하겠습니다.

답변

0

JFrame 대신 JDialog을 사용하고 modalityTypeAPPLICATION_MODAL으로 설정하십시오. 표시된 경우 닫을 때까지 열린 스레드를 차단합니다. 결과 데이터를 클래스 자체에 저장하십시오.

public class EnteringPin extends JDialog { 
    // ... 
} 

public static void main(String args[]){ 
    EnteringPin EnterPin = new EnteringPin(); 
    EnterPin.setModalityType(ModalityType.APPLICATION_MODAL); 
    EnterPin.setVisible(true); 

    DataType data = EnterPin.data; // Get data 
    // ... 
} 

EnteringPin 내에서, 거기에서, 등 onWindowClosedWindowAdapter을 등록하고 폐기하십시오.

관련 문제