本题的功能是定义自已的组件类。窗口中排布着12个按钮,鼠标移动按钮时,按钮背景颜色改变,用鼠标单

6 查阅

本题的功能是定义自已的组件类。窗口中排布着12个按钮,鼠标移动按钮时,按钮背景颜色改变,用鼠标单击 按钮时,后台将显示该按钮对应的字符。 import java.awt.*; import java.awt.event.*; import java.util.*; class java3 extends Frame{ String keys="l23456789*0"; java3{ super("java3"); addWindowListener(new WindowAdapter{ public void windowClosing(WindowEvent e){ System.exit(O); } }); setLayout(new GridLayout(4,3,6,6)); for(int i=0;i<keyslength;i++)){ KeyButton kb=new KeyButton(keys.charAt (i)); kb.addkeyListener(this); kb.setBackground(Color.pink); kb.setForeground(Color.black); add(kb); } setSize(200,200); show; } class KeyEventHandler extends KeyAdapter{ public void keyTyPed(KeyEvent evt){ System.out.println(evt.getChar); } } public static void main(String[]args){ newjava3; } } class KeyButton extends Component{ KeyListener keyListener; boolean highlighted; char key; KeyButton(char k){ this.key=k; addMouseListener(new MouseEventHandler): } public void paint(Graphics g){ int W=getSize.width; int h=getSize.height; String s=""+key; FontMetrics fm=g.getFontMetrics; if(highlighted){ g.setColor(getBackground); g.fillRoundRect(0,0,w-1,h-1,10,10); } g.setColor(getForeground); g.drawRoundRect(0,0,w-1,h-1,10,10); g.drawString(s,(w-fm.stringWidth(s))/2, (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<keys.length;i++第2处:kb.addKeyListener(new KeyEventHandler)第3处:system.out.println(evt.getKeyChar)【解析】第1处是作为遍历keys中元素的条件,而keys中的字符元素就是各个按钮对应的字符。第2处注册键盘事件监听功能,KeyButton实现了KeyLIstener接口,而kb是KeyButton类的对象,所以它是合格的监听者。第3处将从键盘读到的字符输出。

计算机二级