ActionListener收到一个错误(Finals不是抽象的,不会覆盖抽象方法)

时间:2014-03-10 05:12:03

标签: java swing awt actionlistener

这是我的代码。

import java.awt.*;
import java.awt.event.*;

public class Finals extends Frame implements  WindowListener,ActionListener{
public TextField tf1;
public Button btn0,btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9,btnadd,btnminus,btndivide,btnmultiply,btnequals,btnbackspace;

public Finals(){

    Panel outputpanel = new Panel(new FlowLayout());
     tf1 = new TextField(" ",30);
     outputpanel.add(tf1);

    Panel btnpanel = new Panel(new GridLayout (5,5));

     btn0 = new Button ("0");
     btn1 = new Button ("1");
     btn2 = new Button ("2");
     btn3 = new Button ("3");
     btn4 = new Button ("4");
     btn5 = new Button ("5");
     btn6 = new Button ("6");
     btn7 = new Button ("7");
     btn8 = new Button ("8");
     btn9 = new Button ("9");

     btnadd= new Button("+");
     btnminus = new Button("-");
     btndivide = new Button ("/");
     btnmultiply = new Button ("*");
     btnequals = new Button ("=");
     btnbackspace= new Button("<-");

    btnpanel.add(btnadd);
    btnpanel.add(btnminus);
    btnpanel.add(btndivide);
    btnpanel.add(btnmultiply);
    btnpanel.add(btnequals);
    btnpanel.add(btnbackspace);

    btnpanel.add(btn1);
    btnpanel.add(btn2);
    btnpanel.add(btn3);
    btnpanel.add(btn4);
    btnpanel.add(btn5);
    btnpanel.add(btn6);
    btnpanel.add(btn7);
    btnpanel.add(btn8);
    btnpanel.add(btn9);
    btnpanel.add(btn0);

    setLayout(new BorderLayout());
    add(outputpanel,BorderLayout.NORTH);
    add(btnpanel,BorderLayout.SOUTH);
    setVisible (true);
    setSize (300,200);
    setTitle("Calculator");
    setLocationRelativeTo(null);
    setResizable(false);
    addWindowListener(this);
}

public static void mainr(String[]args){
        Finals awt = new Finals();    
}

    public void windowClosing(WindowEvent we){
            System.exit(0);
        }
     public void windowClosed(WindowEvent we){};
     public void windowOpened(WindowEvent we){};
     public void windowIconified(WindowEvent we){};
     public void windowDeiconified(WindowEvent we){};
     public void windowActivated(WindowEvent we){};
     public void windowDeactivated(WindowEvent we){};
}

2 个答案:

答案 0 :(得分:1)

您已实现了界面ActionListener,因此需要覆盖该界面中的actionPerformed方法,否则请将您的类声明为abstract

    @Override
    public void actionPerformed(ActionEvent e) {
       //your code goes here
    }

答案 1 :(得分:1)

如果您要implements interfaceActionListener),那么您需要@Override所有方法。在这种情况下,您需要为actionPerfomed

实施Finals方法
@Override
public void actionPerformed(ActionEvent e) {
    // do something
}

  • 此外,public static void mainr(String[]args){是什么? mainr应为main

  • 此外,请使用@Override anotation,因此您知道已成功覆盖某个方法,即

    @Override
    public void windowClossing(WindowEvent e) {}
    
  • 此外,Swing应用程序应该在Event Dispatch Thread(EDT)上运行。您可以使用main封装SwingUtilities.invokeLater...方法的内部来完成此操作。详情请见Initial Threads

  • 此外,您应该在 setVisible(true)setSize

  • 之后setLocationXxx
  • 此外,您应该只pack()您的框架,而不是setSize(),以便所有组件确定可见。

    < / LI>
  • 同时阅读Extends JFrame vs. creating it inside the the program

  • 另外,为什么AWT而不是Swing?考虑使用Swing。详情请见Creating GUI with Swing