首页 > 解决方案 > 新建一个 Frame 实例而不是创建一个类实例导致了问题

问题描述

我是 Java AWT 编程的新手。这是我的教授教给我们的一个简单代码。功能是单击按钮时,控制台将打印“单击”。

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

 public class myApp  extends Frame implements ActionListener{
    //static Frame frm = new Frame("Using Frame frm = new Frame()");
    static myApp frm = new myApp();
    static Button btn = new Button("click");
    
    public static void main(String[] args){
        frm.setVisible(true);
        frm.setSize(400,400);
        frm.add(btn);
        btn.addActionListener(frm);
    }

    public void actionPerformed(ActionEvent e){
        Button clicked =(Button)e.getSource();
        System.out.println("click!");
    }
 }

我试图修改

static myApp frm = new myApp();

进入 static Frame frm = new Frame("Using Frame frm = new Frame()");

然后我收到一个错误,上面写着

myApp.java:13:错误:不兼容的类型:Frame 无法转换为 ActionListener btn.addActionListener(frm);^ 注意:一些消息已被简化;使用 -Xdiags:verbose 重新编译以获得完整的输出 1 错误

我想问的是(1)这个错误是什么以及如何解决它?(2)如果myApp扩展了Frame,很容易知道我们可以基于myApp类创建一个实例,它 java.awt.frame具有所有的字段和功能java.awt.frame,但是这样做有什么好处呢?为什么不直接使用Frame frm = new Frame()呢?

谢了。为您提供帮助,愿大家在疫情期间平安。

标签: javainheritanceinterfaceawtactionlistener

解决方案


推荐阅读