2016年計算機二級《JAVA》模擬綜合操作試題

字號:

四、綜合應(yīng)用題
    本題的功能是定義自已的組件類。窗口中排布著12
    個按鈕,鼠標移動按鈕時,按鈕背景顏色改變,用鼠標單擊
    按鈕時,后臺將顯示該按鈕對應(yīng)的字符。
    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  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);
    }
    }