IT이야기

다른 JFrame을 닫지 않고 하나의 JFrame을 닫으셨습니까?

cyworld 2021. 9. 16. 21:38
반응형

다른 JFrame을 닫지 않고 하나의 JFrame을 닫으셨습니까?


동시에 두 개(또는 그 이상)의 JFrame 을 표시하고 싶습니다 .
그 중 하나를 닫으면(기본 닫기 버튼 사용) 다른 프레임은 계속 표시되어야 합니다.

어떻게 할 수 있습니까?


당신이 경우에 없는 A는 경우 종료 응용 프로그램을 원하는 JFrame폐쇄, 사용

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE)

대신에

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

로부터 문서 :

  • DO_NOTHING_ON_CLOSE(WindowConstants에 정의됨): 아무 것도 하지 마십시오. 등록된 WindowListener 개체의 windowClosing 메서드에서 작업을 처리하도록 프로그램이 필요합니다.
  • HIDE_ON_CLOSE (WindowConstants에 정의): 등록된 WindowListener 객체를 호출한 후 자동으로 프레임을 숨깁니다.
  • DISPOSE_ON_CLOSE (WindowConstants에 정의됨): 등록된 WindowListener 개체를 호출한 후 프레임을 자동으로 숨기고 삭제합니다.
  • EXIT_ON_CLOSE(JFrame에 정의됨): 시스템 종료 방법을 사용하여 애플리케이션을 종료합니다. 응용 프로그램에서만 이것을 사용하십시오.

이것은 질문이 명확해지기 전에 내 대답이었고 여전히 유용할 수 있습니다.

같은 프레임을 다시 표시 하려면 setVisible(false)에서 사용할 수 있습니다 JFrame.
그렇지 않으면 모든 기본 화면 리소스dispose()제거 하도록 호출 합니다 .


도움이 되나요?

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class TwoJFrames {
    public static void main(String[] args) {
        int nb = 4;
        if (args != null && args.length > 0) {
            nb = Integer.parseInt(args[0]);
        }

        final int frameCount = nb;
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                for (int i = 0; i < frameCount; i++) {
                    JFrame frame = new JFrame("Frame number " + i);
                    frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
                    JPanel p = new JPanel(new BorderLayout());
                    p.add(new JLabel("Click on the corner to close..."), BorderLayout.CENTER);
                    frame.setContentPane(p);
                    frame.setSize(200, 200);
                    frame.setLocation(100 + 20 * i, 100 + 20 * i);
                    frame.setVisible(true);
                }
            }
        });

    }
}

ReferenceURL : https://stackoverflow.com/questions/1944446/close-one-jframe-without-closing-another

반응형