30

I have the jButton1 private member of JFrame and i wanted to close the frame when the button is clicked.

jButton1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e)
    {
    }
});

I wanted to do super.close() but could not find close for super. Is there some way to refer to the JFrame

songyuanyao
  • 169,198
  • 16
  • 310
  • 405
Mohit BAnsal
  • 1,571
  • 5
  • 16
  • 14

5 Answers5

46

You will need a reference to the specific frame you want to close but assuming you have the reference dispose() should close the frame.

jButton1.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e)
    {
       frameToClose.dispose();
    }
});
Anton
  • 12,285
  • 20
  • 64
  • 84
18
JButton b3 = new JButton("CLOSE");

b3.setBounds(50, 375, 250, 50);

b3.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e)
    {
        System.exit(0);
    }
});
songyuanyao
  • 169,198
  • 16
  • 310
  • 405
acp
  • 213
  • 2
  • 2
9

It appears to me that you have two issues here. One is that JFrame does not have a close method, which has been addressed in the other answers.

The other is that you're having trouble referencing your JFrame. Within actionPerformed, super refers to ActionListener. To refer to the JFrame instance there, use MyExtendedJFrame.super instead (you should also be able to use MyExtendedJFrame.this, as I see no reason why you'd want to override the behaviour of dispose or setVisible).

lins314159
  • 2,510
  • 1
  • 16
  • 19
4

You can use super.dispose() method which is more similar to close operation.

kleopatra
  • 51,061
  • 28
  • 99
  • 211
  • 2
    thanks for trying to be helpful :-) Unfortunately, your answer doesn't add much useful, to the extent to being wrong (the listener's super has no dispose, no need to call the frame's super, see @lins314159 for complete details) – kleopatra Mar 26 '12 at 10:13
2

You cat use setVisible () method of JFrame (and set visibility to false) or dispose () method which is more similar to close operation.

Roman
  • 64,384
  • 92
  • 238
  • 332
  • setVisible() method is not working for me. i also thought i can do close the application by doing set the visibility = false... i used System.out(0); method. it works.. dispose() method is also working. – Kavindu Gayantha May 05 '19 at 13:19