为什么我的ActionListener仅适用于我的一个按钮?

时间:2015-06-14 18:40:20

标签: java jbutton actionlistener jtextfield filewriter

这是我的代码:

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

class plugin extends JFrame implements ActionListener {
    JPanel pnl = new JPanel();

    public static void main(String args[]) {
        plugin gui = new plugin();
    }

    JTextField progname = new JTextField("Program Name");
    JButton pnameok = new JButton("Ok");

    JTextField endtxt = new JTextField("Type of file");
    JButton endok = new JButton("Ok");

    JButton stop = new JButton("Stop the Server");

    public plugin() {
        super();
        add(pnl);
        pnl.add(stop);
        pnl.add(progname);
        pnl.add(pnameok);

        pnl.add(endtxt);
        pnl.add(endok);

        pnameok.addActionListener(this);
        endok.addActionListener(this);

        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }

    public void actionPerformed( ActionEvent event ) {

        if(event.getSource() == endok) {
            try {
                String end = endtxt.getText();
                FileWriter endfile = new FileWriter( end + ".txt" );
            }
            catch( IOException e ) {
                boolean uselessend = true;
            }

            if(event.getSource() == pnameok) {
                try {
                    String pname = progname.getText();
                    FileWriter pnamefile = new FileWriter( pname + ".txt" );
                }
                catch( IOException e1 ) {
                    boolean uselesspname = true;
                    try {
                        FileWriter pnamefileuse = new FileWriter( "error" );
                    }
                    catch( IOException e2 ) {
                        boolean completeandutterfail = true;
                    }
                }

            }
        }
    }
}

当我运行它时,在程序名称中输入yay,在文件类型中输入exe,然后单击两个确定按钮,我会得到一个名为exe.txt的新文件但没有调用文件yay.txt。这是为什么?

1 个答案:

答案 0 :(得分:2)

是。你肯定做了些蠢事。那就是到处都是乱七八糟的大括号。从末尾删除末端括号(})并在此代码后立即添加:

catch( IOException e ) {
    boolean uselessend = true;
}

所以它变成了这个:

  catch( IOException e ) {
    boolean uselessend = true;
  }
}

那应该解决它。 另外作为旁注: 1.给你的班级名字首字母。 (例如Plugin)。 2.缩进代码以提高可读性。 3.您可能希望在e.printStackTrace()部分例外中添加catch进行调试。