Java键盘监听


键盘监听接口的API
void keyPressed(KeyEvent e) 按下键时调用。
void keyReleased(KeyEvent e) 当键已被释放时调用。
void keyTyped(KeyEvent e) 键入键时调用。
鼠标监听接口的API
void mouseClicked(MouseEvent e) 在组件上单击(按下并释放)鼠标按钮时调用。
void mouseEntered(MouseEvent e) 当鼠标进入组件时调用。
void mouseExited(MouseEvent e) 当鼠标退出组件时调用。
void mousePressed(MouseEvent e) 在组件上按下鼠标按钮时调用。
void mouseReleased(MouseEvent e) 在组件上释放鼠标按钮时调用。
package com.xiaoqiang;

import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
/**
 * 本类通多个按钮
 * 来实现练习键盘监听接口的使用
 * @author xiaoqiang
 * @Time 2017年4月30日
 */
public class KeyBoard extends JFrame implements KeyListener,MouseListener{
    Container con;
    JButton[] [] jButton;
    JPanel jp;
    JTextArea textArea;
    JButton reset;
    private static String[] keys={"1234567890-=","QWERTYUIOP[]","ASDFGHJKL'","ZXCVBNM,./"};
    public KeyBoard(){
        super("键盘模拟器");
        this.draw();
    }
    private void draw(){
        con=this.getContentPane();
        con.setLayout(null);
        jButton=new JButton[keys.length][];
        for(int i=0;i<keys.length;i++){
            jButton[i]=new JButton[keys[i].length()];
            for(int j=0;j<keys[i].length();j++){
                jButton[i][j]=new JButton(String.valueOf(keys[i].charAt(j)));
                jButton[i][j].setBounds(10+j*80, 30+i*80, 70, 70);
                jButton[i][j].setBackground(Color.BLUE);
                con.add(jButton[i][j]);
                jButton[i][j].addKeyListener(this);
                jButton[i][j].addMouseListener(this);
            }
        }
        textArea=new JTextArea();
        textArea.setBounds(20, 350, 900, 375);
        textArea.setEditable(false);
        con.add(textArea);
        reset=new JButton("重置");
        reset.setBounds(810,190,150,150);
        reset.addMouseListener(this);
        con.add(reset);
        this.setSize(1000, 800);
        this.setVisible(true);
    }
    @Override
    public void keyTyped(KeyEvent e) {
        // TODO Auto-generated method stub

    }
    /**
     * 在按下见键盘时,选择按下按键
     * 把指定按键变红
     */
    @Override
    public void keyPressed(KeyEvent e) {
        System.out.println(e.getKeyChar());
        for(int i=0;i<keys.length;i++){
            for(int j=0;j<keys[i].length();j++){
                if(jButton[i][j].getText().equals(String.valueOf(Character.toUpperCase(e.getKeyChar())))){
                    jButton[i][j].setBackground(Color.red); 
                    textArea.setText(textArea.getText()+jButton[i][j].getText());   
                }
            }
        }

        }
    /**
     * 在释放按下键盘时,
     * 把按下字母恢复到原来状态
     */
    @Override
    public void keyReleased(KeyEvent e) {
        for(int i=0;i<keys.length;i++){
            for(int j=0;j<keys[i].length();j++){
                if(jButton[i][j].getText().equals(String.valueOf(Character.toUpperCase(e.getKeyChar())))){
                    jButton[i][j].setBackground(Color.blue);        
                }
            }
        }

    }

    public static void main(String[] args) {
        new KeyBoard();
    }
    /**
     * 鼠标点击把内容放入文本框
     */
    @Override
    public void mouseClicked(MouseEvent e) {
        if(e.getSource().equals(reset)){
            textArea.setText("");
        }else{
            JButton button=(JButton) e.getSource();
            for(int i=0;i<keys.length;i++){
                for(int j=0;j<keys[i].length();j++){
                    if(jButton[i][j].getText().equals(button.getText())){
                        textArea.setText(textArea.getText()+button.getText());  
                    }
                }
            }
        }
    }
    @Override
    public void mousePressed(MouseEvent e) {
        // TODO Auto-generated method stub

    }
    @Override
    public void mouseReleased(MouseEvent e) {

    }
    /**
     * 鼠标进入相应组件 
     * 按钮变红
     */
    @Override
    public void mouseEntered(MouseEvent e) {
        // TODO Auto-generated method stub
        JButton button=(JButton) e.getSource();
        for(int i=0;i<keys.length;i++){
            for(int j=0;j<keys[i].length();j++){
                if(jButton[i][j].getText().equals(button.getText())){
                    jButton[i][j].setBackground(Color.red);     
                }
            }
        }
    }
    /**
     * 鼠标退出组件 
     * 按钮恢复蓝色
     */
    @Override
    public void mouseExited(MouseEvent e) {
        // TODO Auto-generated method stub
        JButton button=(JButton) e.getSource();
        for(int i=0;i<keys.length;i++){
            for(int j=0;j<keys[i].length();j++){
                if(jButton[i][j].getText().equals(button.getText())){
                    jButton[i][j].setBackground(Color.blue);        
                }
            }
        }
    }
} 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值