如何制作ActionListener for Java Swing按钮

如何制作ActionListener for Java Swing按钮,java,swing,actionlistener,Java,Swing,Actionlistener,我想添加一个关闭BufferedWriter的ActionListener。总的来说,我的程序将变量值保存到一个文件中。这些值被读入在这个JavaGUI中运行的python脚本中。但是,我无法让按钮click ActionListener工作。我只能得到一个WindowListener,用于帧关闭工作 对于WindowListener,我使用以下代码: frame.addWindowListener(new WindowAdapter() { public void wi

我想添加一个关闭BufferedWriter的ActionListener。总的来说,我的程序将变量值保存到一个文件中。这些值被读入在这个JavaGUI中运行的python脚本中。但是,我无法让按钮click ActionListener工作。我只能得到一个WindowListener,用于帧关闭工作

对于WindowListener,我使用以下代码:

frame.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                try {
                    bufferFileWriter.close();
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }
            }

        });
对于ActionListener,它给出错误:java.io.ioexception stream closed,我使用以下代码:

setVarFileBtn.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                // Save the variable values when VarFileBtn pressed
                try {
                    bufferFileWriter.close();
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }
            }
        });

我应该使用什么代码让侦听器识别已单击的按钮setVarFileBtn,然后关闭BufferedWriter?为了将BufferedWriter写入保存到文件中,我是否缺少某些Java Swing代码概念?

为了获取正在按下的按钮,需要从事件中获取操作命令。您可以这样做:

new ActionListener() {
    public void actionPerformed(ActionEvent e)
    {
        if (e.getActionCommand().equals("Save")) {
            // perform save code
        }
    }
}

Save是JButton的名称。

我解决了这个问题。我的错误是因为同一按钮有两个ActionListener。未显示的侦听器用于写入变量值。一旦我简单地将其添加到第一个侦听器:

try {
                    bufferFileWriter.close();
                } catch (IOException ioe) {
                    ioe.printStackTrace();
                }

变量值已写入我的文件。

您是否询问如何验证按下按钮的确实是setVarFileBtn?我想做的不仅仅是验证按下了特定按钮。然后我想执行一些操作,关闭名为bufferFileWriter的BufferedWriter。这就是我以前必须做的,将我写的所有东西保存到一个文件中。修复。谢谢你指出,我没听懂@camickr@NickClark,每个函数最好有单独的侦听器。当您遇到设计问题时,开始使用if/else语句编写侦听器代码。