2011-11-04 4 views
1

여러 가지 다른 방법으로 창을 닫으려고했으나 Action Listener 메서드에 추가 매개 변수를 보낼 수 없어 프레임에 대한 포인터 예외로 인해 프레임을 처리 할 수 ​​없습니다.JButton을 사용하여 JDialog 창을 닫는 방법은 무엇입니까?

이것은 현재 코드입니다.

import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.*; 

public class errorRequiredFieldMissing extends JDialog{ 
JLabel error; 
JButton exit; 
public static JFrame frame; 
public errorRequiredFieldMissing() { 
    super(frame, "Error", true); 
    setLayout(new FlowLayout()); 
    error = new JLabel ("Required field or fields missing, please fill in all fields to continue."); 
    add(error); 
    exit = new JButton ("OK"); 
    add(exit); 
    System.out.println("chk1"); 
    exit.addActionListener(new ActionListener(){ 

     public void actionPerformed(ActionEvent event){ 
      System.out.println("chk2"); 
      frame.dispose(); 
     } 
    }); 
} 
public static void method2(){ 
    System.out.print("success!"); 
    errorRequiredFieldMissing gui = new errorRequiredFieldMissing(); 
    gui.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); 
    gui.setSize(400,100); 
    gui.setLocation(300,25); 
    gui.setVisible(true); 
} 
} 

답변

2

이 방법으로 시도 :

exit.addActionListener(new java.awt.event.ActionListener() { 
    public void actionPerformed(java.awt.event.ActionEvent evt) { 
     exitActionPerformed(evt); 
    } 
}); 

다음

private void exitActionPerformed(java.awt.event.ActionEvent evt) { 
     this.dispose(); 
    } 
+0

근무 완벽하게 감사를! 그런데 왜이게 효과가 있고 내가 시도한 것이 아닙니다. – user1028872

+0

원인 ** 프레임 ** wasnt가 초기화되었습니다 (즉, 널 포인터 예외가 발생하는 이유). 실제로 코드를 게시 한 것과 똑같이 유지하고 8 행을'public static JFrame frame = new JFrame();으로 변경하면됩니다. –

관련 문제