반응형
JFrame의 닫기 버튼 클릭 이벤트를 캡처하는 방법
메서드를 호출하고 싶다confirmExit()
JFrame 제목 표시줄의 빨간색 닫기 버튼을 클릭했을 때
어떻게 하면 그 이벤트를 캡처할 수 있을까요?
또한 사용자가 계속 진행하지 않을 경우 창이 닫히지 않도록 하고 싶습니다.
import javax.swing.JOptionPane;
import javax.swing.JFrame;
/*Some piece of code*/
frame.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
if (JOptionPane.showConfirmDialog(frame,
"Are you sure you want to close this window?", "Close Window?",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION){
System.exit(0);
}
}
});
사용자가 '예'를 선택하지 않는 한 창이 닫히지 않도록 하려면 다음을 추가할 수 있습니다.
frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
windowClosing 메서드를 재정의합니다.
public void windowClosing(WindowEvent e)
창이 닫힐 때 호출됩니다.이 시점에서 닫기 작업을 재정의할 수 있습니다.
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
동작합니다.먼저 프레임이라는 이름의 JFrame을 만든 다음 아래에 이 코드를 추가합니다.
이것은 동작할 수 있습니다.
jdialog.addWindowListener(new WindowAdapter() {
public void windowClosed(WindowEvent e) {
System.out.println("jdialog window closed event received");
}
public void windowClosing(WindowEvent e) {
System.out.println("jdialog window closing event received");
}
});
출처 : https://alvinalexander.com/java/jdialog-close-closing-event
이것은 제가 메뉴 옵션으로 넣은 것입니다. 이 옵션에서 버튼은JFrame
다른 것을 전시하다JFrame
뒤에 있는 프레임은 망가뜨리지 않고 새 프레임만 보이게 하고 싶었어요.처음에 숨겨놨던 첫 번째는JFrame
새로운 것이 표시되게 되었습니다.신규 마감 시JFrame
그 후, 낡은 것을 다시 보이게 하는 조작을 실시해 버렸습니다.
주의: 다음 코드는 Ravinda의 답변과ng
는 입니다.JButton
:
ng.addActionListener((ActionEvent e) -> {
setVisible(false);
JFrame j = new JFrame("NAME");
j.setVisible(true);
j.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
setVisible(true);
}
});
});
이것을 시험해 보세요.
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
그건 작동할 것이다.
언급URL : https://stackoverflow.com/questions/9093448/how-to-capture-a-jframes-close-button-click-event
반응형
'programing' 카테고리의 다른 글
java.util.regex - Pattern.compile()의 중요성 (0) | 2022.09.23 |
---|---|
mariadb를 설치하기 위한 예상 스크립트를 어떻게 작성합니까? (0) | 2022.09.16 |
MySQL에서 인덱스 이름을 변경하려면 어떻게 해야 합니까? (0) | 2022.09.16 |
그렇지 않으면 html에 내장되어 있는 경우 (0) | 2022.09.16 |
Android.view를 참조.Class Android를 부풀리는 동안 BulgeException 오류가 발생했습니다.Webkit.WebView (0) | 2022.09.16 |