2012-11-21 4 views
1

GUI에 창을 닫아야하는 버튼이 있습니다. 그러나 해당 이벤트 처리기는 JFrame의 별도 메서드에있는 AbstractAction 하위 클래스에 있습니다. 이 때문에 내 AbstractAction에서 닫으라고 JFrame에게 말할 수있는 방법을 볼 수 없습니다.다른 방법으로 하위 클래스에서 JFrame을 닫는 방법?

는 Heres는 내 코드의 기본 레이아웃 :

public PointWindow() 
    { 
    initialize(); 
    } 

    public void initialize() 
    { 
    JFrame frame = new JFrame(); 
    // JFrame stuff 
    frame.setContentPane(createGUI()); 
    frame.setVisible(true); 
    } 

    public JPanel createGUI() 
    { 
    JPanel gui = new JPanel(); 

    // Code.... 

    class MakeGraphACT extends AbstractAction 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
     frame.setVisible(false); // <--- How to get this to work? 
     frame.dispose();   // <--- 
     new GraphWindow(pointList); 
     } 
    } 

    //Code... 

    return gui; 
    } 

나는 내 코드를 계획하고 나쁜 일을하거나 그냥 뭔가를 분명 실종?

+0

사용자에게 여러 개의 창을 던지고 싶습니까? 실생활에서이 작업을 수행하는 많은 응용 프로그램의 이름을 지정할 수 있습니까? 답변 : 만족할만한 사용자 인터페이스가 아니기 때문에 그리 많지는 않습니다. 아마 당신은 오히려 CardLayout 대신에 견해를 바꿀 것입니다. –

+0

두 개의 창으로 구성된 정말 간단한 프로그램입니다. 나는 네가하는 말을 이해하지만, 그런 작은 응용 프로그램에는 필요하지 않다고 생각한다. – Thrfoot

답변

2

createGUI() 메서드에 final 매개 변수로 프레임을 전달해야합니다.
그러면 내부 클래스에서 액세스 할 수 있습니다.

+0

왜 나는 그 생각을하지 않았습니까? 좋아, 빠른 답장을 보내 주셔서 감사합니다! – Thrfoot

관련 문제