Java 当我编写ActionListener时,这个应该是错误的公共类ex12扩展了JFrame实现ActionListene
上面的程序我试图编写ActionListener,但它给出了错误。 这是密码 公共类ex12扩展JFrame实现ActionListener 我在eclipse上写了这个程序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接口的所需方法,因为您正在实现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
}
}