java - 新建一个 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()
呢?
谢了。为您提供帮助,愿大家在疫情期间平安。
解决方案
推荐阅读
- python - Django filter and select date only from datetime
- javascript - 基本的 JavaScript 线程
- sql-server - SSIS Balanced Data Distributor - Processing one row at time
- regex - Regex wildcard page rule for redirecting trailing slash
- asp.net - Couldn't install Microsoft.VisualStudio.AspNet45.Feature
- javascript - 生成 HTML 到 PDF,并使用 Laravel 将生成的 PDF 上传到数据库?
- export - Kivy:任意比例的 export_to_png()
- scala - 如何使用 FS2 中的分类器功能对对象进行分组?
- php - PHP - 获取ajax获取的变量
- php - 如何使用正则表达式仅获取操作数