当前位置:计算机-计算机二级

[问答题]本题的功能是定义自已的组件类.窗口中排布着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); } }

相关题目

关于我们 | 网站声明 | 联系我们 | 违法和不良信息举报

Copyright © 2020 - 2022
石家庄晋咸软件科技有限公司  版权所有
冀ICP备2021011520号-1
冀公网安备 13012102000087号