「各个键盘java」各个键盘的作用

博主:adminadmin 2023-03-17 23:09:07 378

今天给各位分享各个键盘java的知识,其中也会对各个键盘的作用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Java Swing中键盘的处理

在jdk 中 分别针对Jponent和Text类的对象定制了不同的处理键盘事件的方法 在Jponent中 定义了registerKeyboardAction方法 使用这个方法来将需要处理的键盘事件以及处理事件的行为绑定在一起 Text类中具有keymap对象 同Jponent中的处理方法类似 这个对象保存著需要处理的键盘事件和对应的行为

而在jdk 中 使用一种新的方法来处理键盘事件 它将jdk 的两种方法整合在一起 不需要区分被处理的是Jponent还是Text类型的组件 它定义了两个新的类 InputMap和ActionMap 他们均是简单的表或映射 一个InputMap将一个Keystroke对应到一个对象 ActionMap将一个对象对应到一个行为(Action) 通常InputMap中KeyStroke所对应的对象是一个字符串 通过这个字符串可以在ActionMap中查找到相应的行为

InputMap和ActionMap中均有put方法 InputMap的put方法可以将Keystroke对应到一个对象 而ActionMap的put方法可以将一个对象对应到一个行为

在每一个Jponent组件中 会有三个缺省的InputMap和一个缺省的ActionMap 他们可以通过调用getInputMap(int condition)和getActionMap()得到 三个InputMap分别是当组件本身拥有焦点时的InputMap(WHEN_FOCUSED) 当组件的祖先拥有焦点时的InputMap(WHEN_ANCESTOR_OF_FOCUSED_PONENT)和组件所在的窗体具有焦点时的InputMap(WHEN_IN_FOCUSED_WINDOW)(括号内表示为了得到这些InputMap 应该在getInputMap中设置的参数) 以下分别说明这三种InputMap:

组件本身拥有焦点时的InputMap:当组件拥有焦点时 键盘按键按下 则java在这个InputMap中查找键盘事件所对应的KeyStroke对象

组件的祖先拥有焦点时的InputMap:当组件的祖先拥有焦点时 键盘按键按下 则java查找这个InputMap

组件所在的窗口拥有焦点时的InputMap:当组件所在的窗口具有焦点时 键盘按键按下 则java查找这个InputMap

当一个键被按下 这个事件被转化成一个KeyStroke对象 java会查找这个Jponent的相应InputMap(例如 当组件的祖先具有焦点时 java就查找这个Jponent的祖先拥有焦点的InputMap)中是否有这个KeyStroke 如果有 取出它所对应的对象(通常是字符串) 利用这个对象在这个Jponent的ActionMap中查找 如果找到对应的行为(Action) 则java执行这个行为的actionPerformed方法(随后介绍这个方法) 从而达到处理键盘事件的目的

每一个InputMap可以具有parent属性 这个属性的值是一个InputMap 当在一个InputMap中查找不到键盘事件的KeyStroke时 java会自动在它的parent属性指定的InputMap中查找 依次向上查找 直至找到 使用parent的好处是 当有一些固定的 不希望用户进行改动的键盘映射可以存放在parent属性所指定的InputMap中 从而避免被意外修改 另外可以将多个Jponent的缺省InputMap设置具有相同的parent 使得可以共享一些键盘绑定的设置 可以通过InputMap类的setparent()方法设置它的parent属性 ActionMap也具有相同的parent属性 使用方法也相同

以上是如何将一个键盘事件对应到一个行为 以下就简单介绍行为(Action)

行为是一个实现了Action接口的类 在Action接口中定义了 个方法 其中最关键的是actionPerformed()方法 这个方法描述了这个行为的具体操作过程 其他几个方法包括setEnabled isEnabled putValue getValue addPropertyChangeListener 和removePropertyChangeListener方法 他们分别用来设置行为是否可用 判断行为可用的状态 设置和取得行为的一些属性 最后两个方法用来允许其他对象在行动对象的属性发生变化后得到通知

通常我们使用一个实现了Action接口的大部分方法的抽象类AbstractAction类作为基类 重载actionPerformed方法以实现我们的行为

我们用一个例子来具体说明如何进行实际的操作

首先编写一个具体的行为 对指定的键盘事件进行处理

public class TextAction extends AbstractAction

{

private String a;

public TextAction(String a)

{ this a = a; }

public void actionPerformed(ActionEvent parm )

{

String b = parm getActionCommand() //得到行为的命令字符串

System out println( mand= +b)

System out println( prompt= +this a)

}

}

建立四个TextAction对象

TextAction whenFocusSon = new TextAction( focus son )

TextAction whenFocusFather = new TextAction( focus father )

TextAction window = new TextAction( window )

TextAction ancestor = new TextAction( ancestor )

随后 在一个窗体中加入两个面板 名为sonPanel和parentPanel 使得parentPanel是sonPanel的祖先 并在sonPanel中加入一个名为son的button 在parentPanel中加入名为parent的button 在fatherPanel外加入几个button

得到son组件的三个InputMap 并创建一个名为focusFatherIm的InputMap 使得这个InputMap成为focusIm的parent:

//get default inputMap (when focus inputmap) and set a parent InputMap

focusIm = son getInputMap()

focusFatherIm = new InputMap()

focusIm setParent(focusFatherIm)

//get WHEN_ANCESTOR_OF_FOCUSED_PONENT inputMap

ancestorIm = son getInputMap(WHEN_ANCESTOR_OF_FOCUSED_PONENT)

//get WHEN_IN_FOCUSED_WINDOW inputMap

windowIm = son getInputMap(WHEN_IN_FOCUSED_WINDOW)

在这些InputMap中分别加入键盘绑定

focusIm put(KeyStroke getKeyStroke( f ) actionFocusSon )

focusFatherIm put(KeyStroke getKeyStroke( F ) actionFocusFather )

ancestorIm put(KeyStroke getKeyStroke( a ) actionAncestor )

windowIm put(KeyStroke getKeyStroke( w ) actionWindow )

得到son组件的缺省的ActionMap 并将已经建立的行为与特定的对象(字符串)进行绑定

am = son getActionMap()

am put( actionFocusSon whenFocusSon)

am put( actionFocusFather whenFocusFather)

am put( actionAncestor ancestor)

am put( actionWindow window)

运行程序及其相应结果

单击son按钮 这时如果按下 f F a w 程序均会有相应的输出 这是因为 此时的焦点在son按钮上 而son按钮组件的三个InputMap都是有效的 所以他们对应的事件都会发生

单击parent按钮 这时按下 w 程序会有相应的输出 而按下 f F a 程序没有反应 这是因为parent按钮具有焦点 这个按钮不是son按钮的祖先 而son所在的窗口具有焦点 所以只有组件所在窗口具有焦点的InputMap是有效的

lishixinzhi/Article/program/Java/hx/201311/26304

java中每个键盘按键都有一个常量,我想知道键盘上的所有按键的常量值

我晕,,你难道不知道查API??

static char CHAR_UNDEFINED KEY_PRESSED 和 KEY_RELEASED 事件没有映射到一个有效的 Unicode 字符时使用此值作为 keyChar

值。

static int KEY_FIRST 用于键事件的 id 范围的起始编号。

static int KEY_LAST 用于键事件的 id 范围的结束编号。

static int KEY_LOCATION_LEFT 该常量指示按下或释放的键位于左侧(此键的位置有多种可能性)。

static int KEY_LOCATION_NUMPAD 该常量指示按键事件发自于数字键盘或对应于数字键盘的虚拟键。

static int KEY_LOCATION_RIGHT 该常量指示按下或释放的键位于右侧(此键的位置有多种可能性)。

static int KEY_LOCATION_STANDARD 该常量指示按下或释放的键不区分左右,并且不是发自数字键盘(或者不是发自对应于数字键盘的虚拟键)。

static int KEY_LOCATION_UNKNOWN 指示 keyLocation 为不确定或不相关的常量。

static int KEY_PRESSED “按下键”事件。

static int KEY_RELEASED “释放键”事件。

static int KEY_TYPED “键入键”事件。

static int VK_0 VK_0 到 VK_9 与 ASCII 的‘0’到‘9’(0x30 - 0x39) 相同

static int VK_1

static int VK_2

static int VK_3

static int VK_4

static int VK_5

static int VK_6

static int VK_7

static int VK_8

static int VK_9

static int VK_A VK_A 到 VK_Z 与 ASCII 的‘A’到‘Z’(0x41 - 0x5A) 相同

static int VK_ACCEPT 用于 Accept 或 Commit 功能键的常量。

static int VK_ADD

static int VK_AGAIN

static int VK_ALL_CANDIDATES 用于 All Candidates 功能键的常量。

static int VK_ALPHANUMERIC 用于 Alphanumeric 功能键的常量。

static int VK_ALT

static int VK_ALT_GRAPH 用于 AltGraph 功能键的常量。

static int VK_AMPERSAND

static int VK_ASTERISK

static int VK_AT 用于 "@" 键的常量。

static int VK_B

static int VK_BACK_QUOTE

static int VK_BACK_SLASH 用于反斜杠键 "\" 的常量。

static int VK_BACK_SPACE

static int VK_BEGIN 用于 Begin 键的常量。

static int VK_BRACELEFT

static int VK_BRACERIGHT

static int VK_C

static int VK_CANCEL

static int VK_CAPS_LOCK

static int VK_CIRCUMFLEX 用于 "^" 键的常量。

static int VK_CLEAR

static int VK_CLOSE_BRACKET 用于右方括号键 "]" 的常量。

static int VK_CODE_INPUT 用于 Code Input 功能键的常量。

static int VK_COLON 用于 ":" 键的常量。

static int VK_COMMA 用于逗号键 "," 的常量。

static int VK_COMPOSE 用于 Compose 功能键的常量。

static int VK_CONTEXT_MENU 用于 Microsoft Windows 上下文菜单键的常量。

static int VK_CONTROL

static int VK_CONVERT 用于 Convert 功能键的常量。

static int VK_COPY

static int VK_CUT

static int VK_D

static int VK_DEAD_ABOVEDOT

static int VK_DEAD_ABOVERING

static int VK_DEAD_ACUTE

static int VK_DEAD_BREVE

static int VK_DEAD_CARON

static int VK_DEAD_CEDILLA

static int VK_DEAD_CIRCUMFLEX

static int VK_DEAD_DIAERESIS

static int VK_DEAD_DOUBLEACUTE

static int VK_DEAD_GRAVE

static int VK_DEAD_IOTA

static int VK_DEAD_MACRON

static int VK_DEAD_OGONEK

static int VK_DEAD_SEMIVOICED_SOUND

static int VK_DEAD_TILDE

static int VK_DEAD_VOICED_SOUND

static int VK_DECIMAL

static int VK_DELETE

static int VK_DIVIDE

static int VK_DOLLAR 用于 "$" 键的常量。

static int VK_DOWN 用于非数字键盘向下方向键的常量。

static int VK_E

static int VK_END

static int VK_ENTER

static int VK_EQUALS 用于等号键 "=" 的常量。

static int VK_ESCAPE

static int VK_EURO_SIGN 用于欧洲货币符号键的常量。

static int VK_EXCLAMATION_MARK 用于 "!" 键的常量。

static int VK_F

static int VK_F1 用于 F1 功能键的常量。

static int VK_F10 用于 F10 功能键的常量。

static int VK_F11 用于 F11 功能键的常量。

static int VK_F12 用于 F12 功能键的常量。

static int VK_F13 用于 F13 功能键的常量。

static int VK_F14 用于 F14 功能键的常量。

static int VK_F15 用于 F15 功能键的常量。

static int VK_F16 用于 F16 功能键的常量。

static int VK_F17 用于 F17 功能键的常量。

static int VK_F18 用于 F18 功能键的常量。

static int VK_F19 用于 F19 功能键的常量。

static int VK_F2 用于 F2 功能键的常量。

static int VK_F20 用于 F20 功能键的常量。

static int VK_F21 用于 F21 功能键的常量。

static int VK_F22 用于 F22 功能键的常量。

static int VK_F23 用于 F23 功能键的常量。

static int VK_F24 用于 F24 功能键的常量。

static int VK_F3 用于 F3 功能键的常量。

static int VK_F4 用于 F4 功能键的常量。

static int VK_F5 用于 F5 功能键的常量。

static int VK_F6 用于 F6 功能键的常量。

static int VK_F7 用于 F7 功能键的常量。

static int VK_F8 用于 F8 功能键的常量。

static int VK_F9 用于 F9 功能键的常量。

static int VK_FINAL

static int VK_FIND

static int VK_FULL_WIDTH 用于 Full-Width Characters 功能键的常量。

static int VK_G

static int VK_GREATER

static int VK_H

static int VK_HALF_WIDTH 用于 Half-Width Characters 功能键的常量。

static int VK_HELP

static int VK_HIRAGANA 用于 Hiragana 功能键的常量。

static int VK_HOME

static int VK_I

static int VK_INPUT_METHOD_ON_OFF 用于输入法开/关键的常量。

static int VK_INSERT

static int VK_INVERTED_EXCLAMATION_MARK 用于反向感叹号键的常量。

static int VK_J

static int VK_JAPANESE_HIRAGANA 用于 Japanese-Hiragana 功能键的常量。

static int VK_JAPANESE_KATAKANA 用于 Japanese-Katakana 功能键的常量。

static int VK_JAPANESE_ROMAN 用于 Japanese-Roman 功能键的常量。

static int VK_K

static int VK_KANA

static int VK_KANA_LOCK 用于锁定 Kana 功能键的常量。

static int VK_KANJI

static int VK_KATAKANA 用于 Katakana 功能键的常量。

static int VK_KP_DOWN 用于数字键盘向下方向键的常量。

static int VK_KP_LEFT 用于数字键盘向左方向键的常量。

static int VK_KP_RIGHT 用于数字键盘向右方向键的常量。

static int VK_KP_UP 用于数字键盘向上方向键的常量。

static int VK_L

static int VK_LEFT 用于非数字键盘向左方向键的常量。

static int VK_LEFT_PARENTHESIS 用于 "(" 键的常量。

static int VK_LESS

static int VK_M

static int VK_META

static int VK_MINUS 用于减号键 "-" 的常量

static int VK_MODECHANGE

static int VK_MULTIPLY

static int VK_N

static int VK_NONCONVERT 用于 Don't Convert 功能键的常量。

static int VK_NUM_LOCK

static int VK_NUMBER_SIGN 用于 "#" 键的常量。

static int VK_NUMPAD0

static int VK_NUMPAD1

static int VK_NUMPAD2

static int VK_NUMPAD3

static int VK_NUMPAD4

static int VK_NUMPAD5

static int VK_NUMPAD6

static int VK_NUMPAD7

static int VK_NUMPAD8

static int VK_NUMPAD9

static int VK_O

static int VK_OPEN_BRACKET 用于左方括号键 "[" 的常量。

static int VK_P

static int VK_PAGE_DOWN

static int VK_PAGE_UP

static int VK_PASTE

static int VK_PAUSE

static int VK_PERIOD 用于句点键 "." 的常量。

static int VK_PLUS 用于 "+" 键的常量。

static int VK_PREVIOUS_CANDIDATE 用于 Previous Candidate 功能键的常量。

static int VK_PRINTSCREEN

static int VK_PROPS

static int VK_Q

static int VK_QUOTE

static int VK_QUOTEDBL

static int VK_R

static int VK_RIGHT 用于非数字键盘向右方向键的常量。

static int VK_RIGHT_PARENTHESIS 用于 ")" 键的常量。

static int VK_ROMAN_CHARACTERS 用于 Roman Characters 功能键的常量。

static int VK_S

static int VK_SCROLL_LOCK

static int VK_SEMICOLON 用于分号键 ";" 的常量。

static int VK_SEPARATER 此常量已废弃,包括它仅为了向后兼容。

static int VK_SEPARATOR 用于数字键盘分隔符键的常量。

static int VK_SHIFT

static int VK_SLASH 用于正斜杠键 "/" 的常量。

static int VK_SPACE

static int VK_STOP

static int VK_SUBTRACT

static int VK_T

static int VK_TAB

static int VK_U

static int VK_UNDEFINED 此值用于指出 keyCode 是未知的。

static int VK_UNDERSCORE 用于 "_" 键的常量。

static int VK_UNDO

static int VK_UP 用于非数字键盘向上方向键的常量。

static int VK_V

static int VK_W

static int VK_WINDOWS 用于 Microsoft Windows 的 "Windows" 键的常量。

static int VK_X

static int VK_Y

static int VK_Z

java中各种类型的键盘输入代码是什么

下面的是键盘和鼠标的各种事件,看一下是不是你要的!

鼠标监听器

鼠标监听器mouseListener监听鼠标事件MouseEvent。相应事件和处理方法如下表:

鼠标事件 处理方法

MOUSE_CLICKED MouseClicked (MouseEvent) 鼠标点击(单或双)

MOUSE_PRESSED MousePressed (MouseEvent) 鼠标按下

MOUSE_RELEASED MouseReleased(MouseEvent) 鼠标松开

MOUSE_ENTERED MouseEntered (MouseEvent) 鼠标进入(某组件区域)

MOUSE_EXITED MouseExited (MouseEvent) 鼠标离开(某组件区域)

鼠标事件MouseEvent常用方法

int getClickCount() 得到点击次数1 OR 2;

int getX(), int getY() 得到鼠标的(象素)位置。

对于鼠标的移动和拖放,另外用鼠标运动监听器mouseMotionListener。因为许多程序不需要监听鼠标运动,把两者分开可简化程序。有两个方法处理鼠标运动事件:

MOUSE_MOVED MouseMoved (MouseEvent) 鼠标在移动MOUSE_DRAGGED MouseDragged(MouseEvent) 鼠标被拖动

下面的例程演示简单的鼠标监听,并在屏幕上输出鼠标操作的信息。

例2

下面是讨论MouseMotionListener的使用时机,它提供的下面的两个方法,可让你随时掌握鼠标的坐标,并处理拖曳鼠标的操作。

MouseMotionListener mouseDragged(MouseEvent e)

mouseMoved(MouseEvent e)

-----------------------------------------------------------------------

下面的范例让你知道鼠标在JFrame上的坐标,并拖曳出直线来。

MouseDemo3.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/*为了达到画线的功能,我们分别implements MouseListener与MouseMotionListener.

*/

public class MouseDemo3 extends JFrame implements MouseListener,MouseMotionListener{

int flag;//flag=1代表Mouse Moved,flag=2代表Mouse Dragged

int x=0;

int y=0;

int startx,starty,endx,endy;//起始坐标与终点坐标

public MouseDemo3(){

Container contentPane=getContentPane();

contentPane.addMouseListener(this);

contentPane.addMouseMotionListener(this);

setSize(300,300);

show();

addWindowListener(

new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);

}

}

);

}

/*由mousePressed(),mouseReleased()取得示拖曳的开始与结束坐标*/

public void mousePressed(MouseEvent e){

startx=e.getX();

starty=e.getY();

}

public void mouseReleased(MouseEvent e){

endx=e.getX();

endy=e.getY();

}

public void mouseEntered(MouseEvent e){ }

public void mouseExited(MouseEvent e){ }

public void mouseClicked(MouseEvent e){ }

/*mouseMoved(),mouseDragged()取得鼠标移动的每一个坐标,并调用repaint()方法*/

public void mouseMoved(MouseEvent e){

flag=1;

x=e.getX();

y=e.getY();

repaint();

}

public void mouseDragged(MouseEvent e){

flag=2;

x=e.getX();

y=e.getY();

repaint();

}

public void update(Graphics g){

g.setColor(this.getBackground());

g.fillRect(0,0,getWidth(),getHeight());

paint(g);

}

public void paint(Graphics g){

g.setColor(Color.black);

if (flag==1){

g.drawString("鼠标坐标:("+x+","+y+";)",10,50);

g.drawLine(startx,starty,endx,endy);

}

if (flag==2){

g.drawString("拖曳鼠标价坐标:("+x+","+y+";)",10,50);

g.drawLine(startx,starty,x,y);

}

}

public static void main(String[] args){

new MouseDemo3();

}

}

例3

实现一个简单的鼠标控制程序MouseController。程序功能很简单:随机移动鼠标并点击左键。

代码如下:

import java.awt.AWTException;

import java.awt.Dimension;

import java.awt.Robot;

import java.awt.Toolkit;

import java.awt.event.InputEvent;

import java.util.Random;

/**

*

*/

/**

* @Create date 2007-11-6

*/

public class MouseController implements Runnable {

private Dimension dim;

private Random rand;

private Robot robot;

private volatile boolean stop = false;

public MouseController() {

dim = Toolkit.getDefaultToolkit().getScreenSize();

rand = new Random();

try {

robot = new Robot();

} catch (AWTException ex) {

ex.printStackTrace();

}

}

public void run() {

while(!stop) {

int x = rand.nextInt(dim.width);

int y = rand.nextInt(dim.height);

robot.mouseMove(x, y);

robot.mousePress(InputEvent.BUTTON1_MASK);

try {

Thread.sleep(2000);

} catch (InterruptedException ex) {

ex.printStackTrace();

}

}

}

public synchronized void stop() {

stop = true;

}

public static void main(String[] args) {

MouseController mc = new MouseController();

Thre

$False$

ad mcThread = new Thread(mc);

System.out.println("Mouse Controller start");

mcThread.start();

try {

Thread.sleep(60000);

} catch (InterruptedException ex) {

ex.printStackTrace();

}

mc.stop();

System.out.println("Mouse Controller stoped");

}

}

例4 本例程演示鼠标监听器,鼠标点击和运动的监听。

///

// MouseEvt.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

class MyPanel extends JPanel implements MouseMotionListener{

public MyPanel() {

addMouseListener(new MouseAdapter() {

publicvoid mouseClicked(MouseEvent evt) {

if (evt.getClickCount() = 2)

System.out.println("\n双击鼠标");

int x = evt.getX(); int y = evt.getY();

System.out.println("点击鼠标的位置\nX:" + x + "\ty: " + y);

}

});

addMouseMotionListener(this);

}

publicvoid mouseMoved(MouseEvent evt){

System.out.println("\n鼠标正在移动");

}

publicvoid mouseDragged(MouseEvent evt){

System.out.println("\n鼠标正在拖动");

}

}

class MyFrame extends JFrame{

public MyFrame(){

setTitle("鼠标事件示例程序");

setSize(300, 200);

addWindowListener(new WindowAdapter(){

publicvoid windowClosing(WindowEvent e){

System.exit(0);

}

} );

Container contentPane = getContentPane();

contentPane.add(new MyPanel());

}

}

publicclass MouseEvt{

publicstaticvoid main(String[] args){

JFrame frame = new MyFrame();

frame.setVisible(true);

}

}

///

简要说明

在MyPanel的构建器中添加了鼠标适配器来监听鼠标点击数和位置。也添加了运动监听器来处理移动和拖放操作。

鼠标双击事件

鼠标的单双击事件在很多时候对我们帮助很大,但是在JAVA中却没有给出鼠标双击事件.我们可以通过事件源e.getClickCount()==2来判断鼠标点击次数来实现鼠标双击事件,例如: public class MyMouseListener

extends java.awt.event.MouseAdapter ...{

public void mouseClicked(MouseEvent e) ...{

System.out.println("clicked");

int clickTimes = e.getClickCount();

if (clickTimes == 2) ...{

System.out.println("Doublc Clicked!");

}

}

}

但是这样并没有达到我们的要求,因为在每次触发双击事件的同时会触发单击事件.所以我们试图改进以上方案,不使用系统提供的e.getClickCount()方法.可以考虑当第一次单击鼠标的时候让鼠标单击事件延时0.2秒执行,而在这段时间里等待第二次单击,如果有第二次单击,那么我们执行双击事件任务,取消单击任务;如果在这段时间没有等到再次单击,那么执行单击任务.

下面是用定时器延时单击事件实现鼠标双击事件,单击和双击事件互不影响!

public class MyMouseListener

extends java.awt.event.MouseAdapter ...{

private static boolean flag=false;//用来判断是否已经执行双击事件

private static int clickNum=0;//用来判断是否该执行双击事件

public void mouseClicked(MouseEvent e) ...{

final MouseEvent me=e;//事件源

this.flag=false;//每次点击鼠标初始化双击事件执行标志为false

if (this.clickNum == 1) ...{//当clickNum==1时执行双击事件

this.mouseDoubleClicked(me);//执行双击事件

this.clickNum=0;//初始化双击事件执行标志为0

this.flag=true;//双击事件已执行,事件标志为true

return;

}

//定义定时器

java.util.Timer timer=new java.util.Timer();

//定时器开始执行,延时0.2秒后确定是否执行单击事件

timer.schedule(new java.util.TimerTask() ...{

private int n=0;//记录定时器执行次数

public void run() ...{

if(MyMouseListener.flag)...{//如果双击事件已经执行,那么直接取消单击执行

n=0;

MyMouseListener.clickNum=0;

this.cancel();

return;

}

if (n == 1) ...{//定时器等待0.2秒后,双击事件仍未发生,执行单击事件

mouseSingleClicked(me);//执行单击事件

MyMouseListener.flag = true;

MyMouseListener.clickNum=0;

n=0;

this.cancel();

return;

}

clickNum++;

n++;

}

},new java.util.Date(),500);

}

/** *//**

* 鼠标单击事件

* @param e 事件源参数

*/

public void mouseSingleClicked(MouseEvent e)...{

System.out.println("Single Clicked!");

}

/** *//**

* 鼠标双击事件

* @param e 事件源参数

*/

public void mouseDoubleClicked(MouseEvent e)...{

System.out.println("Doublc Clicked!");

}

}

//Test.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Test extends JFrame{

public Test(){

super("test");

init();

this.setSize(800,600);

this.setVisible(true);

}

private void init(){

JButton b=new JButton("button");

b.setBounds(50,50,100,30);

this.getContentPane().setLayout(null);

this.getContentPane().add(b);

b.addMouseListener(new MyMouseListener());

}

public static void main(String args[]){

new Test();

}

}

键盘监听器

键盘监听器KeyListener用来监听键盘事件。键盘事件有三种:KEY_PRESSED键按下了,KEY_RELEASED键松开了,KEY_TYPED键按过了。每个键都有一个键码,普通键的键码就是ASCII码。键码可通过int getKeyCode()方法获得。Java设置了一种“虚拟键码”(Virtual Key Code),用“VK_”作为前缀,例如VK_G。下面是某些特殊键的虚拟键码。

键码 含义 键码 含义

VK_LEFT/VK_RIGHT 左右方向键 VK_CONTROL Ctrl键

VK_KP_UP 小键盘向上 VK_ATL Alt键

VK_PAUSE 暂停键 VK_SHIFT Shift键

VK_NUMBER0 小键盘数字0 VK_F1 功能键F1

VK_0 数字键0 VK_B 字母键B

虚拟键码对应的是键位,不区分大小写。要想知道大小写还必须查看修饰键(modifier key)。这由输入事件InputEvent的getModifere()方法得到,把返回值与常量SHIFT_MASK, CONTROL_MASK, ALT_MASK比较,用以判定哪个修饰键处于“同时按下”状态。

监听器KeyListener有三个方法keyPressed(KeyEvent evt),keyReleased(KeyEvent evt),keyTyped(KeyEvent evt),分别用于相应事件发生后的处理。下面的例程中给自己的键盘监听器建立了showKeyEventMsg方法来显示按键信息。

除了getKeyCode()方法得到键码外,还可用getKeyChar()方法得到输入的字符,用getKeyText(code)方法得到输入的字符串。用isShiftDown()判断shift键是否被按下等。当按下Control键时getKeyText返回的是“ctrl",Alt和Shift也类似。

下面的例子演示得到键码和字符的方法,在命令行上显示结果。

例1 本例程演示键盘监听器后键码的用法。

///

// KeyEvt.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

class MyKeyListener implements KeyListener{

publicvoid keyPressed(KeyEvent evt) {

System.out.println("\n按键被按下");

showKeyEventMsg(evt);

}

publicvoid keyReleased(KeyEvent evt){ }

publicvoid keyTyped(KeyEvent evt) { }

privatevoid showKeyEventMsg(KeyEvent evt){//显示按键事件信息

//得到按键对应的整型数

int code = evt.getKeyCode();

//返回按键事件所代表的字符

char c = evt.getKeyChar();

//得到代表按键的字符串

String szText = evt.getKeyText(code);

if (code != KeyEvent.VK_UNDEFINED)

System.out.println("\n按键对应的整型数:"+code);

if (c != KeyEvent.CHAR_UNDEFINED)

System.out.println("\n与按键相联系的字符:"+c);

if (evt.isShiftDown())

System.out.println("\n按键Shift被按下");

System.out.println("\n按键本身的字符串:"+szText);

}

}

class ButtonPanel extends JPanel{

public ButtonPanel() {

//新建一个文本域组件

tf = new JTextField(20);

add(tf);

//指定用来处理该按钮事件的监听器对象为JPanel本身

myListener = new MyKeyListener();

tf.addKeyListener(myListener);

}

private JTextField tf;

private MyKeyListener myListener;

}

class ButtonFrame extends JFrame{

public ButtonFrame() {

setTitle("键盘事件示例程序");

setSize(300, 200);

setLocation(100,100);

addWindowListener(new WindowAdapter() {

publicvoid windowClosing(WindowEvent e)

{ System.exit(0);

}

});

Container ctPane = getContentPane();

ctPane.add(new ButtonPanel());

}

}

publicclass KeyEvt{

publicstaticvoid main(String[] args) {

JFrame frame = new ButtonFrame();

frame.setVisible(true);

}

}

///简要说明

程序建立了自己的键盘监听器MyKeyListener,定义了一个新方法showKeyEventMsg用来在标准输出设备上显示有关的键盘信息。

在面版ButtonPanel上建立文本框并加键盘监听器。把面版ButtonPanel放到窗口ButtonFrame中。

关于各个键盘java和各个键盘的作用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。