2009-12-22 4 views

답변

73

당신은 JFrame를 닫을 때 응용 프로그램이 종료하지에서, documentation에서

setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE) 

대신

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

사용한다면 : (

  • DO_NOTHING_ON_CLOSE WindowCons에 정의 됨 tants) : 아무것도하지 마라. 프로그램이 등록 된 WindowListener 객체의 windowClosing 메서드에서 작업을 처리하도록합니다.
  • HIDE_ON_CLOSE (WindowConstants에 정의) : 등록 된 WindowListener 객체를 호출 한 후 프레임을 자동으로 숨 깁니다.
  • DISPOSE_ON_CLOSE (WindowConstants에 정의) : 등록 된 WindowListener 객체를 호출 한 후 프레임을 자동으로 숨기고 처리합니다.
  • EXIT_ON_CLOSE (JFrame에서 정의 됨) : 시스템 종료 메소드를 사용하여 응용 프로그램을 종료하십시오. 이 기능은 응용 프로그램에서만 사용하십시오. 다시 동일한 프레임을 표시하려는 경우 당신은 당신의 JFramesetVisible(false)을 사용할 수 있습니다

    :


이 질문이 명확하기 전에, 여전히 유용 할 수 있습니다 내 대답했다.
그렇지 않으면 dispose()에서 remove all of the native screen resources으로 전화하십시오.

+0

감사합니다.하지만 오른쪽 상단 모서리에있는 닫기 버튼으로 창을 닫습니다. setVisible (false)를 확실히 사용하지 않고 스레드를 중지해야합니다. – Keating

+0

나는 내가 어떤 mothed를 오버라이드해야한다고 생각하지만, 나는 어떤 mothed 모르지만 나는 그것이 닫는 mothed 아니라고 생각합니다. – Keating

+0

나는 무엇을 성취하려고하는지 잘 모르겠다. 질문을 편집하고 무엇을하려고하고 어떤 것이 효과가 없는지에 대한 정보를 추가 할 수 있습니까? –

3

도움이 되었습니까?

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); 
       } 
      } 
     }); 

    } 
} 
+1

그 것이 유용합니다. 감사합니다! – Keating