【问题标题】:ActionListener gets an error it says(Finals is not abstract and does not override abstract method)ActionListener 收到它说的错误(Finals 不是抽象的,并且不会覆盖抽象方法)
【发布时间】:2014-04-13 02:29:43
【问题描述】:

这是我的代码。

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){};
}

【问题讨论】:

  • 什么是mainr?请复制并粘贴您的代码..不要输入..
  • 也粘贴堆栈跟踪。
  • 为什么选择 AWT 而不是 Swing?请参阅我在 Swing extras over AWT 上的回答,有很多放弃使用 AWT 组件的充分理由。

标签: java swing awt actionlistener


【解决方案1】:

您已经实现了接口ActionListener,因此需要从该接口重写actionPerformed 方法,否则将您的类声明为abstract

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

【讨论】:

    【解决方案2】:

    如果你要去implementsinterface (ActionListener),那么你需要@Override 所有的方法。在这种情况下,您需要为您的 Finals 类实现 actionPerfomed 方法

    @Override
    public void actionPerformed(ActionEvent e) {
        // do something
    }
    

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

    • 另外,使用@Override 注释,这样你就知道你已经成功地覆盖了一个方法,即

      @Override
      public void windowClossing(WindowEvent e) {}
      
    • 此外,Swing 应用程序应在事件调度线程 (EDT) 上运行。您可以通过用SwingUtilities.invokeLater... 包裹main 方法的内部来做到这一点。更多信息请访问Initial Threads

    • 另外,你应该 setVisible(true) setSizesetLocationXxx

    • 此外,您应该只使用pack() 您的框架,而不是setSize(),以便所有组件确保被可见地包含。

    • 另请阅读Extends JFrame vs. creating it inside the the program

    • 另外,为什么是 AWT 而不是 Swing?考虑使用 Swing。更多信息请访问Creating GUI with Swing

    【讨论】:

    • OPs 使用 AWT 框架/面板等 :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多