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);
}
}
}
}
}
相關推薦
JAVA之鍵盤,滑鼠監聽事件
本案設計鍵盤按鈕,畫出一個簡易鍵盤, 通過按下,釋放鍵盤 滑鼠經過按鈕,滑鼠點選按鈕,滑鼠離開按鈕 詳細解釋了滑鼠鍵盤對應事件 先看一下鍵盤監聽介面的API void keyPressed(KeyEvent e) 按下鍵時呼叫。 void k
Fragment中RecyclerView的使用解析,以及監聽事件處理
RecyclerView是可以代替listview使用的新元件,個人感覺其主要特色:其介面卡adapter中,重寫的東西少了,頁面展示的效果跟加多了,比如可以在RecyclerView設定listview的顯示效果,也可以設定gridview的顯示效果,也可以設定瀑布流的顯示效果!下面程式碼主要
Java OpenCV開發——使用JavaCV在視窗顯示影象,並監聽滑鼠點選事件
在Eclipse下使用OpenCV開發過程中,需要在彈出視窗中顯示影象,並能監聽滑鼠點選事件。但網上一般都是用JLabel顯示圖片,再新增到JFrame上;但JLabel不對輸入事件作出反應,無法實現需求。 為此我查遍資料,發現在JavaCV中
Java之GUI鍵盤監聽事件KeyListener
例項:監聽鍵盤的上下左右鍵 /** * KeyListener:鍵盤監聽事件 * @author Administrator */ public class KeyListenerDemo
ButterKnife之三:Adapter中ButterKnife核心常用功能使用(替代findviewbyid,替代OnClickListener以及繫結多個id監聽事件)
在上一篇“ButterKnife之一:Activity中ButterKnife核心常用功能使用(替代findviewbyid,替代OnClickListener以及繫結多個id監聽事件)”中對ButterKnife已經做了相對較詳細的介紹,本篇只對Adapter中ButterKnife使用的程式
ButterKnife之二:Fragment 中ButterKnife核心常用功能使用(替代findviewbyid,替代OnClickListener以及繫結多個id監聽事件)
在上一篇“ButterKnife之一:Activity中ButterKnife核心常用功能使用(替代findviewbyid,替代OnClickListener以及繫結多個id監聽事件)”中對ButterKnife已經做了相對較詳細的介紹,本篇只對Fragment 中ButterKnife使用的
專案總結之 jquery中,使用append增加新元素時,新增元素的繫結監聽事件失效的解決辦法
$(“outerSelector”).on(“eventType”,“innerSelector”,function(){}); 舉例:如果在一個 中,通過append新增一個id="demo"的按鈕,常用的直接$(“Selector”).on(“eventType”,function
vue之在頁面中監聽鍵盤的Enter鍵來觸發某個按鈕事件
專案中得需求:給頁面某個按鈕繫結Enter鍵,但是按鈕不在form中,直接給按鈕繫結後此按鈕只有獲取了焦點按鍵才會觸發,顯然,一直保持按鈕獲取焦點是不現實得。所以通過查詢等,結合專案需求,完成了下面得程式碼,希望對大家有用,歡迎一起探討,Email:[email p
JavaScript之事件概念和監聽事件
scrip isp doctype utf itl 技術分享 創建 img ret 1、事件的概念: JavaScript使我們有能力創建動態頁面,網頁中的每一個元素都可以產生某些觸發JavaScript函數的事件。我們可以認為事件是可以被JavaScript偵測到的一種行
<Java>按鈕監聽事件的實現方式
方式 log undle 必須 AC listen oncreate ava creat 一:事件處理機制要通過以下三個不同對象來實現: (1)事件源:事件發生的場所,通常為產生事件的組件。 (2)事件對象:封裝在組件上發生的特定事件。 (3)事件監聽對象:負責監聽事件源發
addEventListener() 方法,監聽事件
addEventListener()方法,監聽事件 你可以用removeEventListener() 來移除事件的監聽。 語法: addEventListener(event,function,capture); event 必須,指定事件名 function
egret之移除帶引數的監聽事件
this.selectBtn.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onClickNewIndo.bind(this,this.data), this);//新增監聽事件 public onClickNewIndo
layui select下拉框改變之 change 監聽事件
在layui中使用 jquery 觸發select 的 change事件無效 使用layui.use監聽select事件 <select lay-filter="dem
[Xcode10 實際操作]七、檔案與資料-(6 )通過通知中心,實現監聽和處理程式退出事件的功能
本文將演示通過通知中心,實現監聽和處理程式退出事件的功能。在專案導航區,開啟檢視控制器的程式碼檔案【ViewController.swift】 1 import UIKit 2 3 class ViewController: UIViewController { 4 5
[Xcode10 實際操作]七、文件與數據-(6 )通過通知中心,實現監聽和處理程序退出事件的功能
英雄 idl ide active xcod end 控制 .sh Once 本文將演示通過通知中心,實現監聽和處理程序退出事件的功能。在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】 1 import UIKit 2 3
unity打包webgl程式和js鍵盤監聽事件衝突的問題。
最近用unity釋出webgl程式時,出現了一個挺蛋疼的問題就是,webgl裡面的程式他會接受js的鍵盤監聽事件,這樣就導致了webgl程式可以使用出入框,讓後js程式的輸入框就無效了,為了解決這個問題,我也找了一些資料,不過看了以後感覺大部分不能用,後來通過自己研究總結得出了下面的程式碼,親測可用,廢話不多
unity打包webgl程序和js鍵盤監聽事件沖突的問題。
apt 初始 types oar document 了解 打包 tlist 判斷 最近用unity發布webgl程序時,出現了一個挺蛋疼的問題就是,webgl裏面的程序他會接受js的鍵盤監聽事件,這樣就導致了webgl程序可以使用出入框,讓後js程序的輸入框就無效了,為了解
安卓實現任意控制元件view可拖拽,並監聽拖拽和點選事件,可自動拉回螢幕邊緣
因為專案中有需要實現控制元件可任意拖拽的需求,所以簡單寫了個自定義OnTouchListener,以作拋磚引玉,歡迎大家提議反饋。 完整實現類如下,程式碼中有詳細註釋: 使用者可以決定是否開啟自動拖拽邊緣功能,可以監聽控制元件的拖拽和點選事件 public cl
js/jQery中的鍵盤監聽事件觸發回車鍵位登入觸發教程及demo
js/jQery中的鍵盤監聽事件觸發回車鍵位登入觸發教程及demo 在我們專案的過程中經常會遇到需要鍵盤 來控制的事件,比如:登入、搜尋等,廢話不多說上程式碼!! 我這裡主要是做了兩個的監聽,一個是回車的,一個是通用複製的, 可以在判斷中寫入方法體來控制 <script
ButterKnife之一:Activity中ButterKnife核心常用功能使用(替代findviewbyid,替代OnClickListener以及繫結多個id監聽事件)
ButterKnife是一個註解類,ButterKnife開源框架以其強大的view繫結和click事件處理功能,大大減少程式碼量,節省開發時間,提高開發效率,而且ButterKnife在adapter中的使用也方便的處理了adapter中ViewHodler的繫結問題,下面就學習內容做簡單記錄