您的位置:首页 > 编程语言 > Java开发

JAVA之键盘,鼠标监听事件

2017-04-30 16:29 591 查看
本案设计键盘按钮,画出一个简易键盘,

通过按下,释放键盘

鼠标经过按钮,鼠标点击按钮,鼠标离开按钮

详细解释了鼠标键盘对应事件

先看一下键盘监听接口的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);
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息