消息响应的问题---不什么鼠标和键盘无法响应呢?
程序预期效果:当点击鼠标时,画布响应,文本行输出"mouseClicked"字样,当响应键盘时,文本行出现"keyTyped"字样
实际上的效果是:可以键入字符,但文本行无输出.
问题:是哪里出错了导致了预期效果与实际效果的不同呢?请各位指点.
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MyCanvas implements MouseListener,KeyListener
{
//变量定义
Canvas c;
String s="";
TextField tf;
//主函数
public static void main(String args[])
{
Frame f = new Frame("Canvas");
MyCanvas mc = new MyCanvas(); //实例化一个画布
mc.c = new Canvas();
mc.tf = new TextField();
TextField tf = new TextField(); //实例化一个单行的文本输入框
f.add("South",tf);
f.add("Center",mc.c);
f.setSize(300,150);
mc.c.addMouseListener(mc);
mc.c.addKeyListener(mc);
f.addWindowListener(new WinClose());
f.setVisible(true);
}
//响应鼠标
public void mouseClicked(MouseEvent ev)
{
tf.setText("mouseClicked");
c.requestFocus(); //设置焦点
}
public void mouseEntered(MouseEvent ev){}
public void mouseExited(MouseEvent ev){}
public void mousePressed(MouseEvent ev){}
public void mouseReleased(MouseEvent ev){}
//响应键盘事件
public void keyTyped(KeyEvent ev)
{
tf.setText("keyTyped");
s += ev.getKeyChar();
c.getGraphics().drawString(s,0,20);
}
//重写键盘事件接口里其它没用到的方法(令其为空)
public void keyPressed(KeyEvent ev){}
public void keyReleased(KeyEvent ev){}
}
class WinClose extends WindowAdapter
{
public void windowClosing(WindowEvent ev)
{
System.exit(0); //关闭窗口
}
};