(h-fm.getHeight())/2+fm.getAscent()); }
class MouseEventHandler extends MouseAdapter{ public void mousePressed(MouseEvent evt){ if(keyListener!=null){ keyListener.keyTyped(
new KeyEvent(KeyButton.this,KeyEvent.KEY_ TYPED,
System.currentTimeMillis(),
0,KeyEvent.VK_UNDEFINED,key)); } }
public void mouseEntered(MouseEvent evt){ highlighted=true; repaint(); }
public void mouseExited(MouseEvent evt){ highlighted=false; repaint(); } }
public synchronized void addKeyListerner(KeyLis- tener l){
keyListener=AWTEventMuhieaster.add(key- Listener,1); }
public synchronized void removeKeyListener(Key- Listener l){
keyListener=AWTEventMuhicaster.remove (keyListener,1); } }
第1处:int i=0;i
第2处:kb.addKeyListener(new KeyEventHandler()) 第3处:system.out.println(evt.getKeyChar())
【解析】第1处是作为遍历keys中元素的条件,而keys中的字符元素就是各个按钮对应的字符。第2处注册键盘事件监听功能,KeyButton实现了KeyLIstener接口,而kb是KeyButton类的对象,所以它是合格的监听者。第3处将从键盘读到的字符输出。