JAVA中类名不是抽象的,并且未覆盖抽象方法

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Geren extends Applet implements ActionListener
{
Label lblName=new Label("姓 名: ");
TextField txtName=new TextField(20);
Label lblAge=new Label("年 龄: ");
TextField txtAge=new TextField(20);
Label lblOcc=new Label("职 业: ");
TextField txtOcc=new TextField(20);
Label lblHod=new Label("个人爱好: ");
TextArea txtHod=new TextArea(5,20);
Button btn=new Button("确 定");
Label msg=new Label("请填写您的个人信息,然后单击【确 定】按钮。 ");
public void init( )
{
add(lblName);
add(txtName);
add(lblAge);
add(txtAge);
add(lblOcc);
add(txtOcc);
add(lblHod);
add(txtHod);
add(btn);
add(msg);
btn.addActionListener(this);
}
public void actionperformed(ActionEvent e)
{
String str;
str=txtName.getText()+"今年"+txtAge.getText()+"岁,职业为"+txtOcc.getText()+",平

时喜欢"+txtHod.getText()+"。";
msg.setText(str);
}
}
请问一下以上代码为何在DOS环境下运行后出现类名不是抽象的,并且未覆盖java.awt.event.ActionEvent中的抽象方法actionperformed(java.awt.event.ActionEvent)

import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Geren extends Applet implements ActionListener
{
Frame f=new Frame("表格"); //添加一个框架。,一个窗体必须有一个框架
Label lblName=new Label("姓 名: ");
TextField txtName=new TextField(20);
Label lblAge=new Label("年 龄: ");
TextField txtAge=new TextField(20);
Label lblOcc=new Label("职 业: ");
TextField txtOcc=new TextField(20);
Label lblHod=new Label("个人爱好: ");
TextArea txtHod=new TextArea(5,20);
Button btn=new Button("确 定");
Label msg=new Label("请填写您的个人信息,然后单击【确 定】按钮。 ");
public void init( )
{
f.add(lblName); //这里都加了f,表示把控件放到这个框架上。有如你不能把书放在空中,你必须得有个书架才能把书有在某个位置。这个说法我不知道对不对,反正我是这样理解。但我又认为用这来理解布局管理器更好。见笑了。
f.add(txtName);
f.add(lblAge);
f.add(txtAge);
f.add(lblOcc);
f.add(txtOcc);
f.add(lblHod);
f.add(txtHod);
f.add(btn);
f.add(msg);
btn.addActionListener(this);
f.setSize(260,300); //设置了窗体的大小,要是没有这个,运行出来的只是一个条子。
f.setLayout(new FlowLayout(FlowLayout.LEFT));//定义一个FlowLayout布局管理器,每个窗体都会有至少一个布局管理器。而之前你没加,默认的为Borderlayout.所以不定义布局管理器时,默认是写在borderlayout中的center里,而一个格里只能放一个控件,所以要是不定义一个布局管理器里,窗体只会显示最后添加的一个控件,如这个程序里的:请填写您的个人信息,然后单击【确 定】按钮。当然,你也可以用这个默认的borderlayout布局管理器,不过你得定义一个panel。选把要添加的控件添加到panel上,再把panel放到布局管理器中。呵呵,对于这个我也只理解这么一点。
f.setVisible(true);//设置窗体可见,如没有它,则程序能运行,但看不到结果。
f.addWindowListener(new WindowAdapter()// 这类是用来实现窗口右上角那关闭按钮的。当然,可以不写,那样的话你得用一个按钮来实现退出。要不就得去进程里关闭了。不过我认为,写这种程序,这个类是一定要写的。
{
public void windowClosing(WindowEvent e)
{System.exit(0);}
});
}

public static void main(String args[])//你写的程序缺少一个main方法,每一个程序都要有一个main方法的,而且只能有一个。
{
Geren g=new Geren();
g.init();
}
public void actionPerformed(ActionEvent e) //你出现的错误在这。把actionPerformed中的P写成小写了。所以接口中的public void actionPerformed(ActionEvent e)没能实现,即没有被履盖,而用一个接口,它里边的方法是必须要履盖的。即,都实现,不实现也得写个空方法出来。
{
String str;
str=txtName.getText()+"今年"+txtAge.getText()+"岁,职业为"+txtOcc.getText()+",平 时喜欢"+txtHod.getText()+"。";
msg.setText(str);
}

}

呵呵,我也是最近才学的.如有错误请.多指教.一起进步.
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-10-04
首先你覆盖的public void actionperformed(ActionEvent e)方法中的actionperformed应该是actionPerformed,切记是大写的P。

另外你这个是Applet应用程序,所以你应该在额外建一个html文件,
文件名为Geren.html,在该html文件中只要写入如下代码:
<applet code=Geren.class height=100 width=300></applet>即可,
然后直接打开这个html文件就会看到你想要的页面了。
该程序已经验证成功!!本回答被提问者采纳
相似回答