Java 当我编写ActionListener时,这个应该是错误的公共类ex12扩展了JFrame实现ActionListene

Java 当我编写ActionListener时,这个应该是错误的公共类ex12扩展了JFrame实现ActionListene,java,swing,Java,Swing,上面的程序我试图编写ActionListener,但它给出了错误。 这是密码 公共类ex12扩展JFrame实现ActionListener 我在eclipse上写了这个程序 请任何人修复此错误您需要实现来自ActionListener接口的所需方法,因为您正在实现ActionListener接口 首先,您可以实现actionPerformed方法,并执行如下操作 import java.awt.BorderLayout; import java.awt.EventQueue; import j

上面的程序我试图编写ActionListener,但它给出了错误。 这是密码

公共类ex12扩展JFrame实现ActionListener

我在eclipse上写了这个程序


请任何人修复此错误

您需要实现来自ActionListener接口的所需方法,因为您正在实现ActionListener接口

首先,您可以实现actionPerformed方法,并执行如下操作

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;

import java.awt.event.ActionEvent;




public class ex12 extends JFrame implements ActionListener     {

     JPanel contentPane;
     JTextField textField;
     JTextField textField_1;
     JTextField textField_2;
     JTextField textField_3;
     JTextField textField_4;
     JTextField textField_5;


    public ex12() {
        setTitle("Student marks");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 472, 411);
        contentPane = new JPanel();
        contentPane.setBorder(null);
        contentPane.setLayout(null);
        setContentPane(contentPane);

        JLabel lblNewLabel = new JLabel("Name");
        lblNewLabel.setBounds(62, 61, 46, 14);
        contentPane.add(lblNewLabel);

        textField = new JTextField();
        textField.setBounds(153, 58, 86, 20);
        contentPane.add(textField);
        textField.setColumns(10);

        JLabel lblNewLabel_1 = new JLabel("m1");
        lblNewLabel_1.setBounds(62, 108, 46, 14);
        contentPane.add(lblNewLabel_1);

        textField_1 = new JTextField();
        textField_1.setBounds(153, 105, 86, 20);
        contentPane.add(textField_1);
        textField_1.setColumns(10);

        JLabel lblNewLabel_2 = new JLabel("m2");
        lblNewLabel_2.setBounds(62, 157, 46, 14);
        contentPane.add(lblNewLabel_2);

        textField_2 = new JTextField();
        textField_2.setBounds(153, 154, 86, 20);
        contentPane.add(textField_2);
        textField_2.setColumns(10);

        JLabel lblNewLabel_3 = new JLabel("tot");
        lblNewLabel_3.setBounds(62, 213, 46, 14);
        contentPane.add(lblNewLabel_3);

        textField_3 = new JTextField();
        textField_3.setBounds(153, 210, 86, 20);
        contentPane.add(textField_3);
        textField_3.setColumns(10);

        JLabel lblNewLabel_4 = new JLabel("Avg");
        lblNewLabel_4.setBounds(62, 270, 46, 14);
        contentPane.add(lblNewLabel_4);

        textField_4 = new JTextField();
        textField_4.setBounds(153, 267, 86, 20);
        contentPane.add(textField_4);
        textField_4.setColumns(10);

        JLabel lblNewLabel_5 = new JLabel("Grade");
        lblNewLabel_5.setBounds(62, 317, 46, 14);
        contentPane.add(lblNewLabel_5);

        textField_5 = new JTextField();
        textField_5.setBounds(153, 314, 86, 20);
        contentPane.add(textField_5);
        textField_5.setColumns(10);

        JButton ok = new JButton("Ok");
        ok.setBounds(313, 73, 89, 23);
        contentPane.add(ok);

        ok.addActionListener(new ActionListener() 


        {





            public void actionPerformed(ActionEvent arg0) {

                double bsal,tax,allo,nsal;


                if (arg0. getSource().equals(ok))
                {



                    if(bsal > 5000 )
                    {

                        tax = bsal * 0.15;
                        allo = bsal * 0.2;
                    }
                    else if (bsal > 30000)
                    {
                        tax = bsal * 0.5;
                        allo = bsal * 0.1;
                    }
                    else if (bsal > 20000)
                    {
                        tax = 0;
                        allo = 0;
                    }
                    else
                    {
                        tax = 0;
                        allo = 0;
                    }

                }   





            }
        });

    }
    public static void main(String[] args) {

        ex12 e = new ex12();
        e.show();

    }



}
然后,您可以添加操作侦听器

@override
public void actionPerformed(ActionEvent arg0) {
}
其次,您可以完全删除实现ActionListener的类,并将类保持为:

ok.addActionListener(this);

如果您想编写自己的ActionListener,请尝试以下操作:

public class ex12 extends JFrame {
//rest of your code.
或者,您可以这样实现接口:

public class Example extends JFrame {

private JButton ok = new JButton("ok");

public Example() {
    ok.addActionListener(new OwnActionListener());
}

private class OwnActionListener implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
    }

}

}

ex12需要实现接口ActionListener的合同要求-长此以往,您需要在ex12中实现actionPerformed方法。。。或者去掉implements ActionListener错误日志在哪里?错误是-局部变量ok是从内部类访问的;需要声明为final,使变量ok finalpublic void actionPerformedActionEvent arg0{ok.addActionListenerthis;如果我添加了这个,我得到了一个错误您只能在类实现接口ActionListener公共类ex12扩展JFrame实现ActionListener时添加这个{
public class Example extends JFrame implements ActionListener {

private JButton ok = new JButton("ok");

public Example() {
    ok.addActionListener(this);
}

@Override
public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
}

}