문제

사용자 및 비밀번호를 요청하는 작은 프레임이 있습니다. 이 프레임은 기본 창의 버튼 위로 클릭하여 열립니다.

그런 다음 두 개의 버튼이 있습니다 : 확인 및 취소.

"취소"버튼을 클릭하면 앱을 종료하지 않고이 프레임을 닫아야합니다.

어떻게 할 수 있습니까?

도움이 되었습니까?

해결책

frame.hide () 또는 frame.dispose ()를 사용할 수 있습니다. 또한 JDialog 또는 Joptionpane을 살펴 보는 것이 좋습니다.

수정 : Hide ()가 더 이상 사용되지 않습니다. setvisible (false)을 대신 사용해야합니다

다른 팁

어쩌면 더 깨끗한 방법은 exit_on_close에서 dispose_on_close로 setDefaultCloseOperation을 변경하는 것입니다.

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

프레임에서 setVisible (false)을 호출 할 수 있습니다.

hide_on_close로 전달되는 프레임에서 setDefaultCloseOperation을 호출 할 수도 있습니다 (정보 : 정보 : http://java.sun.com/javase/6/docs/api/javax/swing/jframe.html#setdefaultcloseoperation%28int%29). 이는 사용자가 JFrame의 "X"를 눌러 닫으면 앱이 사라지는 것을 방지합니다.

사용 this.dispose(); 사용자 이름/암호가 성공할 때 액션 리스너 메소드에서. 예 :

public void actionPerformed(ActionEvent ae) {

    if(ae.getSource()=="button you press to confirm username/password"){
        if(userNameTf.getText().equals(username)&&isPassword(passwordTf.getPassword())){
            new "window to be opened upon success"
            this.dispose(); // calls dispose on this object ie. 
                                            // the login window 
        }
        else{
            userNameTf.setText("");
            passwordTf.setText("");

            JOptionPane.showMessageDialog(this,
                    "Username and/or password is incorrect!",
                    "Attention!",
                    JOptionPane.WARNING_MESSAGE);
        }
    }

}

내부 클래스를 사용하여 이벤트를 처리하는 경우 'this.dispose ()'를 super_class_name.this.dispose ()로 바꾸십시오.

당신이하지 않도록하십시오 :

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

SetVisible 메소드는 메모리 리소스를 해제하지 않으며 양식을 다시 사용할 때만 사용해야합니다.

그만큼 처분하십시오 방법은이 창에서 사용하는 모든 기본 스크린 리소스, 하위 구성 요소 및 모든 소유의 어린이를 출시합니다. 즉, 이러한 구성 요소의 리소스가 파괴되고, 소비하는 메모리는 OS로 반환되며, 비위장으로 표시됩니다.

구현하는 외부 클래스에서 기능을 수행하십시오. JFrame (취소 버튼을 누르면 닫아야합니다).
쓰다 this.setVisible(false); 그 기능의 구현에서.
마지막 으로이 기능을 호출하십시오 ActionListener 닫으려면 구현.

여러 가지 방법으로 할 수 있지만이 두 가지 방법은 가장 유용한 것입니다.
1. 쓰기 this.setVisible(false) 내부 구현 ActionListener
또는
2. 쓰기 this.dispose() 내부 구현 ActionListener. 이것이 당신을 도울 수 있기를 바랍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top