从JButton的actionListener关闭JFrame

时间:2012-11-08 15:18:02

标签: java swing jframe jbutton

如何在JButton的setVisible(false)函数中调用addActionListener JFrame(如下所示):

jButton.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent arg0) {
   //here           
  }
});

2 个答案:

答案 0 :(得分:2)

假设您有一个声明为:

的变量
JFrame frame;

你只需要打电话:

frame.setVisible(false);

否则,如果您在扩展JFrame的类中,则必须:

NameOfClass.this.setVisible(false);

或者甚至更好地使用setVisible(false),你可以dispose()

答案 1 :(得分:2)

您只需要在定义按钮动作的位置访问该框架。你可以通过JFrame final,或者将它作为定义Action的类中的字段来完成此任务:

import java.awt.event.*;
import javax.swing.*;

public class CloseFrame extends JPanel{

    public CloseFrame(final JFrame frame){

        JButton button = new JButton("Hide Screen");
        button.addActionListener(new ActionListener(){

            @Override
            public void actionPerformed(ActionEvent e) {
                //What you asked for:
                frame.setVisible(false);
                // What you should use instead of the above:
                //frame.dispose(); 
            }});

        add(button);
    }


    public static void main(String[] args){
        final JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new CloseFrame(frame));
        frame.pack();
        frame.setSize(400, 300);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}

修改

另请注意,如果您确实要关闭该应用程序,则应该使用JFrame.dispose()