programing

JFrame의 닫기 버튼 클릭 이벤트를 캡처하는 방법

javaba 2022. 9. 16. 22:56
반응형

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

반응형