Java键盘监听事件(急啊!)

importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;publicclassKeyEventDemoex... import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KeyEventDemo extends JFrame implements ActionListener,KeyListener{
JTextField txt1;
JPanel pnlMain;
public KeyEventDemo(){
pnlMain=new JPanel();
setContentPane(pnlMain);

txt1=new JTextField(10);
btnOK=new JButton("确认");
btnOK.addKeyListener(this);//1

pnlMain.add(txt1);

setVisible(true);
setTitle("好啊");
setSize(300,200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void keyTyped(KeyEvent e){//6
char c=e.getKeyChar();
if(c=='o'){
txt1.setText("收到,呵呵");
}

}
public void actionPerformed(){} //5
public void keyTyped(){}//2
public void keyPressed(){}//3
public void keyReleased(){}//4

public static void main(String[] args){
new KeyEventDemo();
}
}
/*这是小弟最近学习Java做练习,之后自己写的一段代码,

我构造了:一个JTextField对象txt1
功能:我的原意是通过监听(注释1)键盘事件假如按下的是键盘上的字母'o'键
则就在txt1内显示指定字符(注释6)

不过我失败了编译时它总是提示
KeyEventDemo.java:4: KeyEventDemo 不是抽象的,并且未覆盖 java.awt.event.KeyListe
ner 中的抽象方法 keyReleased(java.awt.event.KeyEvent)
public class KeyEventDemo extends JFrame implements KeyListener{

注释(2——5)我想因为我用不到这几个方法,所以就都置为空操作了(不过不知我的这种
想对不对,各位学长不要笑 )
最近老是碰到这类的问题,抽像类不理解,不会用,希望知道的学长帮忙改正下上面的
代码(如果忙的话到这就可以了,假如还抽得出一点时间的话,我真的希望可以给我讲讲
抽像类到底是什么具体怎么用)
小弟最后只有20分没办法,望学长能帮忙,在此先谢了...
*/
展开
 我来答
卫星3D看世界
2009-08-15 · TA获得超过909个赞
知道小有建树答主
回答量:461
采纳率:66%
帮助的人:169万
展开全部
把你的代码按照你的意思改动了一下,应该可以满足你的要求:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class KeyEventDemo extends JFrame implements ActionListener, KeyListener {
JTextField txt1;
JButton btnOK;
JPanel pnlMain;
public KeyEventDemo() {
pnlMain = new JPanel();
setContentPane(pnlMain);

txt1 = new JTextField(10);
btnOK = new JButton("确认");
txt1.addKeyListener(this); //应该是在 TextField 里添加键盘监听事件
btnOK.addActionListener(this);//在按钮上添加事件监听
pnlMain.setLayout(new BorderLayout());//添加布局器
pnlMain.add(txt1,BorderLayout.NORTH); //TextField 布局在上方
pnlMain.add(btnOK,BorderLayout.SOUTH); //Button 布局在下方

setTitle("好啊");
setSize(300, 200);
setVisible(true);//viersible() 函数应该放在最后
setDefaultCloseOperation(EXIT_ON_CLOSE);
}

public void keyTyped(KeyEvent e) { //6
char c = e.getKeyChar();
if (c == 'o') {
System.out.println("快捷键 " + e.getKeyChar() + " 按下" );
txt1.setText("收到,呵呵");
}else{
System.out.println("普通键 " + e.getKeyChar() + " 按下" );
}

}

public void actionPerformed(ActionEvent event){
System.out.println("按钮按下");
}

public void keyPressed(KeyEvent e) {} //函数要和接口 KeyListener 中定义的一摸一样

public void keyReleased(KeyEvent e) {} //函数要和接口 KeyListener 中定义的一摸一样

public static void main(String[] args) {
new KeyEventDemo();
}
}

额,抽象类其实就是定义了一些接口但又没有去实现的类,这些类定义了接口等它的子类来实现,如果它的子类没有实现这些接口,那么这些子类也是抽象类。抽象类是不能用 new 的方式产生的。
你似乎问错了,应该问接口是啥子东西,接口是。。。。一大堆的东西好难策清楚,看看下面的链接吧,会受益良多的:
http://dev.yesky.com/436/7581936.shtml
ashui_mjm
2009-08-15 · 超过13用户采纳过TA的回答
知道答主
回答量:101
采纳率:0%
帮助的人:40万
展开全部
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class KeyEventDemo extends JFrame implements ActionListener, KeyListener {
/**
*
*/
private static final long serialVersionUID = 1L;
JTextField txt1;
JPanel pnlMain;

public KeyEventDemo() {
pnlMain = new JPanel();
//setContentPane(pnlMain);

txt1 = new JTextField(10);
JButton btnOK = new JButton("确认");
txt1.addKeyListener(this);// 1 这里才是把KeyListener加到TextField上的

btnOK.addKeyListener(this); // 这里是把KeyListener加到Button上面去了

pnlMain.add(txt1);
pnlMain.add(btnOK);

setTitle("好啊");
setSize(300, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
add(pnlMain);

setVisible(true);
//setVisable 一定要在它把所有的组件都加载完后才能用
//简单的说 放在最后就对了
}

public void keyTyped(KeyEvent e) {// 6
char c = e.getKeyChar();
if (c == 'o') {
txt1.setText("收到,呵呵");
}

}

public static void main(String[] args) {
new KeyEventDemo();
}

public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub

}

public void keyPressed(KeyEvent arg0) {
// TODO Auto-generated method stub

}

public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub

}
}

这样的话,就可以运行了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
不完美的ID
2009-08-15
知道答主
回答量:22
采纳率:0%
帮助的人:0
展开全部
抽象类,其主要目的和接口差不多,规定了一定的协议,使实现类去执行,这里所说的协议就是方法的实现,它保证了其子类实现这些方法,试想一下,如果你用一个实体类去做基层类,其子类里的方法可以多变的,或者自己定义,一个子类不好理解,如果有500个子类,每个子类都有自己不同的方法,那要我要你使用这500个子类的功能,你是不是每次都要修改代码调用方法,这样根本体现不了多态,维护是一个很大的问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式