2017年計(jì)算機(jī)二級(jí)考試JAVA應(yīng)用模擬試題2

字號(hào):


    四、綜合應(yīng)用題(共18分)
    本題的功能是定義自已的組件類。窗口中排布著12
    個(gè)按鈕,鼠標(biāo)移動(dòng)按鈕時(shí),按鈕背景顏色改變,用鼠標(biāo)單擊
    按鈕時(shí),后臺(tái)將顯示該按鈕對(duì)應(yīng)的字符。
    import java.a(chǎn)wt.*;
    import java.a(chǎn)wt.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.a(chǎn)ddkeyListener(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.a(chǎn)dd(key-
    Listener,1);
    }
    public synchronized void removeKeyListener(Key-
    Listener l){
    keyListener=AWTEventMuhicaster.remove
    (keyListener,1);
    }
    }