2012-11-08 5 views
2

에는 전체 애플리케이션을 종료하지 않고 취소 버튼을 사용하여 프레임을 닫는 방법이 있습니다. 나는 내가 프레임을 닫 X 닫기 버튼을 누를 때 라인 위의취소 jButton을 사용하여 전체 응용 프로그램을 종료하지 않고 JFrame을 닫을 수있는 방법이 있습니까?

setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE); 

이 경우에만 작동합니다 다음 시도했다. setDefaultCloseOperationEXIT_ON_CLOSE을 제외하고 동일한 작업을

import java.awt.BorderLayout; 
import java.awt.EventQueue; 

import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.border.EmptyBorder; 
import javax.swing.JButton; 
import java.awt.event.ActionListener; 
import java.awt.event.ActionEvent; 


public class CloseTestForm extends JFrame { 

    private JPanel contentPane; 

    /** 
    * Launch the application. 
    */ 
    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        CloseTestForm frame = new CloseTestForm(); 
        frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the frame. 
    */ 
    public CloseTestForm() { 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 450, 300); 
     contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     setContentPane(contentPane); 
     contentPane.setLayout(null); 

     JButton btnSave = new JButton("Save"); 
     btnSave.setBounds(64, 141, 89, 23); 
     contentPane.add(btnSave); 

     JButton btnCancel = new JButton("Cancel"); 
     btnCancel.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent arg0) { 

       //?? 
      } 
     }); 
     btnCancel.setBounds(64, 192, 89, 23); 
     contentPane.add(btnCancel); 
    } 
} 
+0

[여러 JFrames 사용, 좋은/나쁜 연습?] (http://stackoverflow.com/a/9554657/418556) –

답변

3

사용 아무것도 수행하기 위해하는 JButton을 구현하는 다른 좋은 방법이 있습니까.

그런 다음 취소 버튼의 경우 창은 단지 dispose()입니다. 응용 프로그램에 실행중인 다른 스레드가 있으면 종료하지 않습니다. setVisible(false)을 호출하여 창을 숨길 수도 있습니다.

1

프레임을 제거하려면 Window.dispose()으로 전화하십시오.

버튼을 추가하고 버튼에 actionListener를 추가해야합니다. 그런 다음 해당 동작 수신기의 actionPerformed 메서드에서 제거 할 프레임의 .dispose() 메서드를 호출합니다.

+0

처분 내게 고마워 .... – user1809580

1
  • 하지 로컬 변수로 다음

  • 는이 양식 (코드는 여기에 게시) 현재의 JVM이 전까지 만료되지 않습니다 결코에서 myFrame.setVisible(false)

  • 를 호출 할 수 있음을 만들 JFrame를 확장 할 PC가 다시 시작되거나 꺼짐

  • 초를 만들지 말고 JFrame 초, JDialog를 사용하십시오

관련 문제