0

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

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

2 回答 2

2

假设你有一个声明如下的变量:

JFrame frame;

你只需要打电话:

frame.setVisible(false);

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

NameOfClass.this.setVisible(false);

或者甚至比使用setVisible(false), you ca dispose()it 更好。

于 2012-11-08T15:21:41.450 回答
2

您只需要在定义按钮操作的位置可访问框架。您可以通过制作JFramefinal 或将其作为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()如果您真的想关闭应用程序,您可能应该使用。

于 2012-11-08T15:27:46.883 回答