Search code examples
buttondisposejframejpaneldisposing

Disposing JFrame by clicking from an inner JPanel


I'm trying to dispose my JFrame by clicking a button, located on a JPanel that is placed on the JFrame that I want to close.

I tried to make a static method on the JFrame class, but ofcourse my IDE told me that wasn't going to happen.

Anyone thinking of a solution?

Thanks!


Solution

  • Try this:

    public class DisposeJFrame extends JFrame{
        JPanel panel = new JPanel();
        JButton button = new JButton("Dispose JFrame");
    
        public DisposeJFrame(){
            super();
            setTitle("Hi");
            panel.add(button);
            add(panel);
            pack();
    
            button.addActionListener(new ActionListener(){
                @Override
                public void actionPerformed(ActionEvent arg0) {
                    dispose();
                }
            });
        }
    
        public static void main(String args[]){
            SwingUtilities.invokeLater(new Runnable(){
                public void run(){
                    DisposeJFrame jf = new DisposeJFrame();
                        jf.setVisible(true);
                }
            });
        }
    }