1. 程式人生 > >JAVA之鍵盤,滑鼠監聽事件

JAVA之鍵盤,滑鼠監聽事件

本案設計鍵盤按鈕,畫出一個簡易鍵盤,
通過按下,釋放鍵盤
滑鼠經過按鈕,滑鼠點選按鈕,滑鼠離開按鈕
詳細解釋了滑鼠鍵盤對應事件

先看一下鍵盤監聽介面的API

  1. void keyPressed(KeyEvent e) 按下鍵時呼叫。
  2. void keyReleased(KeyEvent e) 當鍵已被釋放時呼叫。
  3. void keyTyped(KeyEvent e) 鍵入鍵時呼叫。

再看看滑鼠監聽介面的API

  1. void mouseClicked(MouseEvent e) 在元件上單擊(按下並釋放)滑鼠按鈕時呼叫。
  2. void mouseEntered(MouseEvent e) 當滑鼠進入元件時呼叫。
  3. void mouseExited(MouseEvent e) 當滑鼠退出元件時呼叫。
  4. void mousePressed(MouseEvent e) 在元件上按下滑鼠按鈕時呼叫。
  5. 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中

JavaGUI鍵盤事件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的繫結問題,下面就學習內容做簡單記錄