JAVA鼠标键盘事件及实例
java面向对象程序例子
JTextField tf= new JTextField();
JButton openButton,saveButton,deleteButton;
public static void main(String args[]){
JOptionPane.showMessageDialog(frame,"File not found","An error",JOptionPane.ERROR_MESSAGE);
}
if(button==ConfirmButton){
int select = JOptionPane.showConfirmDialog(frame,"Creat one","Confirm",JOptionPane.YES_NO_OPTION);
JButton messageButton,ConfirmButton,InputButton,OptionButton;
public static void main(String args[]){
JOptionPaneDemo opd=new JOptionPaneDemo();
opd.go();
JFileChooserDemo fcd= new JFileChooserDemo();
fcd.go();
}
public void go(){
ImageIcon openIcon=new ImageIcon("open.gif");
openButton=new JButton("Open a File...",openIcon);
jnativehook 用法
jnativehook 是一个 Java 库,它提供全局的键盘和鼠标事件侦听功能。
以下是使用 jnativehook 的基本步骤:1. 下载和安装 jnativehook:首先,你需要从 jnativehook 的官方网站下载相关的库文件,并将其添加到你的 Java 项目的类路径中。
2. 创建一个监听器:在 Java 项目中创建一个监听器类,该类将实现 jnativehook 的接口来处理各种事件。
你可以创建一个名为 MyKeyListener 的类,并让它实现 NativeKeyListener 接口。
以下是一个简单的示例:java复制代码import org.jnativehook.GlobalScreen;import org.jnativehook.NativeHookException;import org.jnativehook.keyboard.NativeKeyEvent;import org.jnativehook.keyboard.NativeKeyListener;public class MyKeyListener implements NativeKeyListener {public void nativeKeyPressed(NativeKeyEvent e) {System.out.println("Key Pressed: " +NativeKeyEvent.getKeyText(e.getKeyCode()));}public void nativeKeyReleased(NativeKeyEvent e) {System.out.println("Key Released: " +NativeKeyEvent.getKeyText(e.getKeyCode()));}public void nativeKeyTyped(NativeKeyEvent e) {System.out.println("Key Typed: " + e.getKeyText(e.getKeyCode()));}public static void main(String[] args) {try {GlobalScreen.registerNativeHook();} catch (NativeHookException ex) {System.err.println("There was a problem registering the native hook.");System.err.println(ex.getMessage());System.exit(1);}GlobalScreen.addNativeKeyListener(new MyKeyListener());}}在这个示例中,我们创建了一个名为 MyKeyListener 的类,并实现了 NativeKeyListener 接口。
JAVA 如何截获全局鼠标事件
二. 按使用范围分类,主要有线程钩子和系统钩子
(1) 线程钩子监视指定线程的事件消息。
(2) 系统钩子监视系统中的所有线程的事件消息。因为系统钩子会影响系统中所有的应用程序,所以钩子函数必须放在独立的动态链接库(DLL)
中。这是系统钩子和线程钩子很大的不同之处。
几点需要说明的地方:
(1) 如果对于同一事件(如鼠标消息)既安装了线程钩子又安装了系统钩子,那么系统会自动先调用线程钩子,然后调用系统钩子。
(2)对同一事件消息可安装多个钩子处理过程,这些钩子处理过程形成了钩子链。当前钩子处理结束后应把钩子信息传递给下一个钩子函数。而且最近安装的钩子放在链的开始,而最早安装的钩子放在最后,也就是后加入的先获得控制权。
(3) 钩子特别是系统钩子会消耗消息处理时间,降低系统性能。只有在必要的时候才安装钩子,在使用完毕后要及时卸载。
JAVA 如何截获全局鼠标事件
Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。钩子可以监视系统或进程中的各种事件消息,截获发往目标窗口的消息并进行处理。这样,我们就可以在系统中安装自定义的钩子,监视系统中特定事件的发生,完成特定的功能,比如截获键盘、鼠标的输入,屏幕取词,日志监视等等。可见,利用钩子可以实现许多特殊而有用的功能。因此,对于高级编程人员来说,掌握钩子的编程方法是很有必要的。
1. 激活,建立,销毁,最小化,最大化,移动,改变尺寸等窗口事件;
2. 完成系统指令;
3. 来自系统消息队列中的移动鼠标,键盘事件;
事件类型——精选推荐
事件类型个⼈分类:1.所有事件类型:Java将所有组件可能发⽣的事件进⾏分类,具有共同特征的事件被抽象为⼀个事件类AWTEvent,其中包括ActionEvent类(动作事件)、MouseEvent类(⿏标事件)、KeyEvent类(键盘事件)等。
表列出了常⽤Java事件类、处理该事件的接⼝及接⼝中的⽅法。
常⽤Java事件类、处理该事件的接⼝及接⼝中的⽅法事件类/接⼝名称接⼝⽅法及说明ActionEvent动作事件类ActionListener接⼝actionPerformed(ActionEvent e)单击按钮、选择菜单项或在⽂本框中按回车时AdjustmentEvent调整事件类AdjustmentListener接⼝adjustmentValueChanged(AdjustmentEvent e)当改变滚动条滑块位置时ComponentEvent组件事件类ComponentListener接⼝componentMoved(ComponentEvent e)组件移动时componentHidden(ComponentEvent e)组件隐藏时componentResized(ComponentEvent e)组件缩放时componentShown(ComponentEvent e)组件显⽰时ContainerEvent容器事件类ContainerListener接⼝componentAdded(ContainerEvent e)添加组件时componentRemoved(ContainerEvent e) 移除组件时FocusEvent焦点事件类FocusListener接⼝focusGained(FocusEvent e)组件获得焦点时focusLost(FocusEvent e)组件失去焦点时ItemEvent选择事件类ItemListener接⼝itemStateChanged(ItemEvent e)选择复选框、选项框、单击列表框、选中带复选框菜单时KeyEvent键盘事件类KeyListener接⼝keyPressed(KeyEvent e)键按下时keyReleased(KeyEvent e) 键释放时keyTyped(KeyEvent e)击键时MouseEvent⿏标事件类MouseListener接⼝mouseClicked(MouseEvent e) 单击⿏标时mouseEntered(MouseEvent e)⿏标进⼊时mouseExited(MouseEvent e)⿏标离开时mousePressed(MouseEvent e)⿏标键按下时mouseReleased(MouseEvent e) ⿏标键释放时MouseEvent⿏标移动事件类MouseMotionListener接⼝mouseDragged(MouseEvent e)⿏标拖放时mouseMoved(MouseEvent e)⿏标移动时TextEvent⽂本事件类TextListener接⼝textValueChanged(TextEvent e)⽂本框、多⾏⽂本框内容修改时WindowEvent窗⼝事件类WindowListener接⼝windowOpened(WindowEvent e)窗⼝打开后windowClosed(WindowEvent e)窗⼝关闭后windowClosing(WindowEvent e)窗⼝关闭时windowActivated(WindowEvent e)窗⼝激活时windowDeactivated(WindowEvent e) 窗⼝失去焦点时windowIconified(WindowEvent e)窗⼝最⼩化时windowDeiconified(WindowEvent e) 最⼩化窗⼝还原时当多个事件源触发的事件由⼀个共同的监听器处理时,我们可以通过getSource()⽅法判断当前的事件源是哪⼀个组件。
java中eventhandler的用法
java中eventhandler的用法在Java中,EventHandler通常与JavaFX库一起使用,用于处理各种事件,如按钮点击、键盘输入、鼠标移动等。
EventHandler是一个接口,它接受一个EventType和一个EventHandler对象作为参数,然后执行一个操作。
在JavaFX中,EventHandler常常与setOnAction,setOnMouseClicked,setOnKeyPressed 等方法一起使用,以设置对特定事件的响应。
以下是一个简单的例子,演示了如何在JavaFX中使用EventHandler来处理按钮点击事件:javaimport javafx.application.Application;import javafx.scene.Scene;import javafx.scene.control.Button;import yout.StackPane;import javafx.stage.Stage;import javafx.event.ActionEvent;import javafx.event.EventHandler;public class Main extends Application {@Overridepublic void start(Stage primaryStage) {Button btn = new Button("点击我");btn.setOnAction(new EventHandler<ActionEvent>() {@Overridepublic void handle(ActionEvent event) {System.out.println("按钮被点击了!");}});StackPane root = new StackPane();root.getChildren().add(btn);Scene scene = new Scene(root, 300, 250);primaryStage.setTitle("EventHandler 示例");primaryStage.setScene(scene);primaryStage.show();}public static void main(String[] args) {launch(args);}}在这个例子中,我们创建了一个按钮,并设置了一个EventHandler来处理按钮的点击事件。
Java常用方法大全
Java常用方法大全字符串1、获取字符串的长度length()2 、判断字符串的前缀或后缀与已知字符串是否相同前缀startsWith(String s)后缀endsWith(String s)3、比较两个字符串equals(String s)4、把字符串转化为相应的数值int型Integer.parseInt(字符串)long型Long.parseLong(字符串)float型Folat.valueOf(字符串).floatValue()double型Double.valueOf(字符串).doubleValue()4、将数值转化为字符串valueOf(数值)5、字符串检索indexOf(Srting s) 从头开始检索indexOf(String s ,int startpoint) 从startpoint处开始检索如果没有检索到,将返回-16、得到字符串的子字符串substring(int startpoint) 从startpoint处开始获取substring(int start,int end) 从start到end中间的字符7、替换字符串中的字符,去掉字符串前后空格replace(char old,char new) 用new替换oldtrim()8、分析字符串StringTokenizer(String s) 构造一个分析器,使用默认分隔字符(空格,换行,回车,Tab,进纸符)StringTokenizer(String s,String delim) delim是自己定义的分隔符nextToken() 逐个获取字符串中的语言符号boolean hasMoreTokens() 只要字符串还有语言符号将返回true,否则返回false countTokens() 得到一共有多少个语言符号文本框和文本区1、文本框TextField() 构造文本框,一个字符长TextField(int x) 构造文本框,x个字符长TextField(String s) 构造文本框,显示ssetText(String s) 设置文本为sgetText() 获取文本setEchoChar(char c) 设置显示字符为csetEditable(boolean) 设置文本框是否可以被修改addActionListener() 添加监视器removeActionListener() 移去监视器2、文本区TextArea() 构造文本区TextArea(String s) 构造文本区,显示sTextArea(String s,int x,int y) 构造文本区,x行,y列,显示s TextArea(int x,int y) 构造文本区,x行,y列TextArea(String s,int x,ing y,int scrollbar)scrollbar的值是:TextArea.SCROLLBARS_BOTHTextArea.SCROLLBARS_VERTICAL_ONL YTextArea.SCROLLBARS_HORIZONTAL_ONL Y TextArea.SCROLLBARS_NONEsetText(String s) 设置文本为sgetText() 获取文本addTextListener() 添加监视器removeTextListener() 移去监视器insert(String s,int x) 在x处插入文本sreplaceRange(String s,int x,int y) 用s替换从x到y处的文本append(String s) 在文本的最后追加文本sInt getCaretPosition(int n) 获取文本区中光标的位置按钮1、按钮Button() 构造按钮Button(String s) 构造按钮,标签是ssetLabel(String s) 设置按钮标签是sgetLabel() 获取按钮标签addActionListener() 添加监视器removeActionListener() 移去监视器标签1、标签Label() 构造标签Label(String s) 构造标签,显示sLabel(String s,int x)x是对齐方式,取值:Label.LEFTLabel.RIGHTLabel.CENTERsetText(String s) 设置文本sgetText() 获取文本setBackground(Color c) 设置标签背景颜色setForeground(Color c) 设置字体颜色选择框1、选择框Checkbox() 构造选择框Checkbox(String s) 构造选择框,给定标题sCheckbox(String s,boolean b) b设定初始状态Checkbox(String s,boolean b,CheckboxGroup g) g设定了所属的组(有了组就成为单选框)addItemListener() 添加监视器removeItemListener() 移去监视器getState() 返回选择框的是否选中状态setState(boolean b) 设置选择框的状态getLabel() 获取选择框的标题setLabel(String s) 设置选择框的标题为s选择控件和滚动列表1、选择控件Choice() 构造选择控件add(String s) 向选择控件增加一个选项addItemListener() 添加监视器removeItemListener() 移去监视器getSelectedIndex() 返回当前选项的索引getSelectedItem() 返回当前选项的字符串代表insert(String s,int n) 在n处插入选项sremove(int n)removeAll()2、滚动列表List() 构造滚动列表List(int n) 参数n是可见行数List(int n,boolean b) 参数b是设置是否可以多项选择add(String s) 向列表的结尾增加一个选项add(String s,int n) 在n处增加一个选项AddActionListener() 滚动列表添加监视器addItemListener() 滚动列表上的选项添加监视器remove(int n) 删除n初的选项remnoveAll() 删除全部选项getSelectedIndex() 返回当前选项的索引getSelectedItem() 返回当前选项的字符串代表3、组件类的一些常用方法void setBackground(Color c) 设置组件背景颜色void setForeground(Color c) 设置组件前景颜色void setFonts(Font f) 设置组件字体void setBounds(int x,int y,int w,int h) 设置坐标,x,y表示在容器中坐标,w,h表示宽和高void setLocation(int x,int y) 移动到x,y 处void setSize(int w,int h) 设置宽和高void setVisible(boolean b) 设置组建是否可见int getBounds().wigth 获取宽int getBounds().height 获取高int getBounds().x 获取x 坐标int getBounds().y 获取y 坐标Toolkit getToolkit() 获取工具包对void setEnabled(boolean b) 设置是否可以使用(默认可以)窗口和菜单1、窗口Frame() 构造窗口Frame(String s) 窗口标题是ssetBounds(int x,int y,int w,int h) 窗口位置x,y,宽w,高ysetSize(int w,int h) 设置窗口位置(单位是像素)setBackground(Color c) 设置背景颜色setVisible(boolean b) 设置窗口是否可见pack() 窗口出现时紧凑setTitle(String s) 设置标题为sgetTitle() 获取标题setResizable(boolean b) 设置窗口大小是否可以调整2、菜单条Menubar() 构造菜单条setMenubar() 窗口添加菜单条3、菜单Menu() 构造菜单Menu(String s) 构造菜单,标题saddadd(MenuItem item) 菜单增加菜单选项itemadd(String s) 向菜单增加选项sgetItem(int n) 获取n处的选项getItemCount() 获取选项数目insert(MenuItem item,int n) 在n处插入菜单选项iteminsert(String s,int n) 在n处插入菜单选项remove(int n) 删除菜单的n处的菜单选项removeAll() 删除全部4、菜单项MenuItem() 构造菜单项MenuItem(String s) 构造标题是s的菜单项setEnabled(boolean b) 设置是否可以被选择getLabel() 得到菜单选项名addActionListener() 添加监视器5、有关菜单的技巧addSeparator() 增加菜单分割线CheckboxMenuItem() 复选框菜单项setShortcut(MenuShortcut k) 设置快捷键(k取值KeyEvent.VK_A----KeyEvent.VK_Z)建立对话框1、Dialog类Dialog(Frame f,String s) 构造对话框,初始不可见,s是标题,f是对话框所依赖的窗口Dialog(Frame f,String s,boolean b) b设置初始是否可见getTitle() 获取对话框标题setTitle(String s) 设置对话框标题setModal(boolean b) 设置对话框模式setSize(int w,int h) 设置对话框大小setVisible(boolean b) 显示或隐藏对话框2、FileDialog类Filedialog(Frame f,String s,int mode) mode的值是fileDialog.LOAD或者fileDialog.SAVE public String getDirectory() 获取当前文件对话框中显示的文件所属目录public String getFile() 获取当前文件对话框中文件的字符串表示,不存在返回nullJava中的鼠标和键盘事件1、使用MouseListener借口处理鼠标事件鼠标事件有5种:按下鼠标键,释放鼠标键,点击鼠标键,鼠标进入和鼠标退出鼠标事件类型是MouseEvent,主要方法有:getX(),getY() 获取鼠标位置getModifiers() 获取鼠标左键或者右键getClickCount() 获取鼠标被点击的次数getSource() 获取鼠标发生的事件源事件源获得监视器的方法是addMouseListener(),移去监视器的方法是removeMouseListener() 处理事件源发生的时间的事件的接口是MouseListener 接口中有如下的方法mousePressed(MouseEvent) 负责处理鼠标按下事件mouseReleased(MouseEvent) 负责处理鼠标释放事件mouseEntered(MouseEvent) 负责处理鼠标进入容器事件mouseExited(MouseEvent) 负责处理鼠标离开事件mouseClicked(MouseEvent) 负责处理点击事件2、使用MouseMotionListener接口处理鼠标事件事件源发生的鼠标事件有2种:拖动鼠标和鼠标移动鼠标事件的类型是MouseEvent事件源获得监视器的方法是addMouseMotionListener()处理事件源发生的事件的接口是MouseMotionListener 接口中有如下的方法mouseDragged() 负责处理鼠标拖动事件mouseMoved() 负责处理鼠标移动事件3、控制鼠标的指针形状setCursor(Cursor.getPreddfinedCursor(Cursor.鼠标形状定义)) 鼠标形状定义见(书P 210)4、键盘事件键盘事件源使用addKeyListener 方法获得监视器键盘事件的接口是KeyListener 接口中有3个方法public void keyPressed(KeyEvent e) 按下键盘按键public void keyReleased(KeyEvent e) 释放键盘按键public void keyTypde(KeyEvent e) 按下又释放键盘按键Java多线程机制1、Java的线程类与Runnable接口Thread类public Thread() 创建线程对象public Thread(Runnable target) target 称为被创建线程的目标对象,负责实现Runnable接口线程优先级Thread类有三个有关线程优先级的静态常量:MIN_PRIORITY,MAX_PRIORITY,NORM_PRIORITY新建线程将继承创建它的副相承的优先级,用户可以调用Thread类的setPriority(int a)来修改a的取值:Thread.MIN_PRIORITY,Thread.MAX_PRIORITY,Thread.NORM_PRIORITY主要方法启动线程start()定义线程操作run()使线程休眠sleep()sleep(int millsecond) 以毫秒为单位的休眠时间sleep(int millsecond,int nanosecond) 以纳秒为单位的休眠时间currentThread() 判断谁在占用CPU的线程第二十章输入输出流1、FileInputStream类FileInputStream(String name) 使用给定的文件名name创建一个FileInputStream对象FileInputStream(File file) 使用File对象创建FileInpuStream对象File类有两个常用方法:File(String s) s确定文件名字File(String directory,String s) directory是文件目录例如:File f=new File("Myfile.dat");FileInputStream istream=new FileInputStream(f);处理I/O异常当出现I/O错误的时候,Java生成一个IOException(I/O异常)对象来表示这个错误的信号。
java1.7 registerkeyboardaction用法
java1.7 registerkeyboardaction用法全文共四篇示例,供读者参考第一篇示例:Java是一种被广泛应用于软件开发的编程语言,它的版本也在不断地更新。
而在Java1.7版本中,新增了一个非常实用的方法registerKeyboardAction,可以帮助开发者更加方便地处理键盘事件。
本文将详细介绍registerKeyboardAction的用法和示例,并且给出一些实用的建议。
registerKeyboardAction方法的定义如下:```javapublic final void registerKeyboardAction(ActionListener anAction, KeyStroke aKeyStroke, int aCondition)```参数说明:- anAction:一个ActionListener接口实例,用来处理键盘事件的动作- aKeyStroke:一个KeyStroke对象,表示需要被处理的键盘事件- aCondition:一个int类型的值,表示触发事件的条件在使用registerKeyboardAction方法之前,我们首先需要了解KeyStroke类和ActionListener接口的基本用法。
KeyStroke类代表一个键盘输入,可以由键的字符或者虚拟键码和一些修饰符组成,比如CTRL、ALT、SHIFT。
在使用KeyStroke类时,可以通过KeyStroke.getKeyStroke(String s)方法来创建一个KeyStroke对象,其中参数s是一个字符串,表示键盘输入的组合方式。
ActionListener接口是一个监听器接口,用来处理用户动作事件。
在实际开发中,我们通常会创建一个实现ActionListener接口的类,然后在这个类中实现actionPerformed方法,用来处理用户的动作事件。
下面我们通过一个示例来更加详细地说明registerKeyboardAction方法的用法。
processing鼠标交互代码案例
processing鼠标交互代码案例摘要:1.鼠标交互代码案例介绍2.代码案例的基本结构和功能3.代码案例的实现过程4.代码案例的优化和扩展5.总结与展望正文:processing 是一种基于Java 的编程语言,广泛应用于数字艺术、交互设计等领域。
在processing 中,鼠标交互是一种常见的交互方式,可以实现对用户鼠标行为的追踪和响应。
本文将通过一个具体的代码案例,介绍如何使用processing 实现鼠标交互功能。
一、鼠标交互代码案例介绍本次案例是一个简单的processing 程序,通过鼠标移动来控制一个矩形的移动。
程序包括两个主要部分:主函数和鼠标事件监听器。
主函数负责初始化环境和设置鼠标事件监听器;鼠标事件监听器则负责处理鼠标移动事件,并根据鼠标位置更新矩形的位置。
二、代码案例的基本结构和功能1.初始化环境:创建一个窗口,设置窗口大小和背景颜色。
2.创建矩形:创建一个矩形对象,并设置其初始位置和大小。
3.设置鼠标事件监听器:为窗口添加鼠标移动事件监听器,当鼠标移动时触发该监听器。
4.处理鼠标事件:在鼠标事件监听器中,获取鼠标当前位置,计算矩形的新位置,并更新矩形的坐标。
5.更新窗口:最后,将矩形的最新位置绘制在窗口上。
三、代码案例的实现过程```processingvoid setup() {size(400, 400); // 设置窗口大小background(255); // 设置背景颜色rect(x, y, width, height); // 创建矩形并设置初始位置}void draw() {// 更新矩形位置x = mouseX; // 设置矩形的新x 坐标y = mouseY; // 设置矩形的新y 坐标}```四、代码案例的优化和扩展1.增加鼠标点击事件:在鼠标事件监听器中,还可以添加鼠标点击事件,实现更多交互功能。
2.增加键盘事件监听器:通过键盘事件,可以实现更多控制方式,如使用方向键控制矩形移动等。
java listener几个功能例子 -回复
java listener几个功能例子-回复Java Listener 几个功能例子Java是一种功能强大的编程语言,旨在为开发人员提供灵活且可靠的解决方案。
其中一个重要的特性是监听器(Listener),它允许程序在特定事件发生时做出相应的反应。
本文将介绍几个常见的Java Listener功能例子,并逐步演示其实现过程。
写这篇文章时,将依次介绍以下功能例子:1. 窗口监听器(WindowListener): 当用户打开、关闭或最小化窗口时触发的事件。
2. 鼠标监听器(MouseListener): 当用户在GUI界面上进行鼠标点击操作时触发的事件。
3. 键盘监听器(KeyListener): 当用户在GUI界面上按下键盘按键时触发的事件。
下面将逐一介绍这些功能例子,并提供详细的实现步骤。
1. 窗口监听器(WindowListener)窗口监听器允许我们在窗口打开、关闭或最小化等事件发生时做出相应的反应。
要实现窗口监听器,我们可以创建一个实现WindowListener接口的类,并重写其方法。
首先,我们需要创建一个GUI窗口,可以使用Swing或JavaFX框架。
接下来,创建一个窗口监听器的实现类。
这个类应该继承WindowAdapter,它提供了对WindowListener接口的默认实现。
在窗口监听器实现类中,我们可以重写以下方法来响应窗口事件:- windowOpened(WindowEvent e):窗口打开时触发的事件。
- windowClosing(WindowEvent e):用户关闭窗口时触发的事件。
- windowIconified(WindowEvent e):窗口最小化时触发的事件。
以窗口关闭事件为例,可以按照以下步骤实现:1. 创建窗口监听器实现类,并重写windowClosing方法。
2. 在windowClosing方法中添加关闭窗口的逻辑,例如释放资源或保存数据。
java事件处理机制
2
事件处理机制
事件及其处理机制
如果用户在用户界面执行了一个动作,这将导致一个事件的发生。 事件是描述用户所执行的一个操作,所产生的一个行为。 三个主要概念:事件、事件源、事件处理方法
事件的接口及方法
事件监听器(或谓监视器或处理者)通常是一个类,每一个事件类都有一个对应的事件处理 接口。例如,处理键盘输入事件“KeyEvent”类的接口为“KeyListener” 接口,监听器是 接口,又称监听器接口。
当使用CTRL+C复合键时,下面的逻辑表达式为true :
e.getModifiers()==InputEvent.CTRL_MASK&&e.getKeyCode()==KeyEvent. VK_C 【例8-11】键盘事件的创建与响应实例。
1.3 文本事件
文本框TextField或文本域TextArea信息发生改变时,产生TextEvent文本事 件。要使程序能响应并处理TextEvent事件,要实现TextListener接口,应将 TextEvent事件注册给监听器:public void addTextListener(Listener),并实 现TextListener接口中的textValueChanged(TextEvent)方法。 【例8-13】文本事件程序设计实例。
2021/12/17
图形用户界面编程
3
2021/12/17
图形用户界面编程
4
事件Байду номын сангаас理机制
3. 事件处理主要步骤
通常,处理的主要步骤如下(设表8-11所示某事件为XxxEvent): 选择组件作为事件源,不同类型的组件会产生特定类型的事件。 定义要接收并处理某种类型的事件XxxEvent,注册相应的事件监听器类。 通过调用组件方法:eventSourceObject.addXxxListener(XxxListener)方 法向组件注册事件监听器。
java键盘监听事件的用法
java键盘监听事件的用法Java中,键盘监听事件用于捕获并处理用户在键盘上的输入。
键盘监听事件能够感知用户按下和释放特定键的动作,并触发相应的事件处理程序。
本文将逐步介绍Java键盘监听事件的用法,包括如何注册监听器、如何处理事件以及一些常见问题的解决方法。
一、注册键盘监听器要使用键盘监听事件,首先需要注册一个键盘监听器。
在Java中,可以通过以下步骤来注册键盘监听器:1. 创建一个类,实现java.awt.event.KeyListener接口。
javaimport java.awt.event.KeyEvent;import java.awt.event.KeyListener;public class MyKeyListener implements KeyListener {实现接口中的方法@Overridepublic void keyPressed(KeyEvent e) {处理按下键的事件}@Overridepublic void keyReleased(KeyEvent e) {处理释放键的事件}@Overridepublic void keyTyped(KeyEvent e) {处理键入字符的事件}}2. 在需要监听键盘事件的组件(例如窗口或面板)上注册监听器。
javaimport java.awt.*;import javax.swing.*;public class MyFrame extends JFrame {public MyFrame() {创建一个面板JPanel panel = new JPanel();注册键盘监听器panel.addKeyListener(new MyKeyListener());panel.setFocusable(true); 设置面板可以获取焦点panel.requestFocus(); 使面板获取焦点添加面板到窗口add(panel);设置窗口属性setTitle("Keyboard Event Sample");setSize(300, 200);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setVisible(true);}public static void main(String[] args) {new MyFrame();}}二、处理键盘事件注册了键盘监听器后,就可以处理键盘事件了。
java 键盘事件
java 键盘事件
键盘事件是KeyEvent类对象。
通过键盘事件,可以利用按键来控制和执行一些操作或从键盘上进行输入。
键盘事件包括三个事件:键按下、键松开、键按下又松开。
要处理键盘事件必须实现KeyListener接口,该接口中定义了下面三个方法:
●public void keyPressed(KeyEvent e) 当键被按下时调用该方法。
●public void keyReleased(KeyEvent e) 当键被松开时调用该方法。
●public void keyTyped(KeyEvent e) 当键被按下又松开时调用该方法。
每个键盘事件都有一个相关的键字符和键编码,它们可以通过KeyEvent类的getKeyChar()和getKeyCode()方法获得。
事件类KeyEvent常用方法如表10-3所示:
表10-3 KeyEvent类常用方法
另外,在KeyEvent类中为许多键定义了常量,表10-4列出了一些常用的键与其对应的常量。
表10-4 常用键和对应的常量
下面创建一个案例,来说明键盘事件的使用。
代码如下所示。
在上述代码中,当按下Ctrl+x时,会改变按钮大小,如图10-14所示。
当按下Shift+x时,会改变按钮座标,如图10-15所示。
图10-14 按下Ctrl+x键时
图10-15 按下Shift+x键时。
Java按键事件KeyEvent
Java按键事件KeyEvent按键事件可以利⽤键盘来控制和执⾏⼀些动作,或者从键盘上获取输⼊,只要按下,释放⼀个键或者在⼀个组件上敲击,就会触发按键事件。
KeyEvent对象描述事件的特性(按下,放开,或者敲击⼀个键)和对应的值。
java提供KeyListener接⼝处理按键事件。
当按下⼀个键时会调⽤KeyPressed处理器,当松开⼀个键时会调⽤KeyReleased处理器,当输⼊⼀个统⼀编码时会调⽤KeyTyped处理器。
如果这个键不是统⼀码(如功能键,修改键,动作键和控制键)每个按键事件有⼀个相关的按键字符和按键代码,分别由KeyEvent中的getKeyChar()和getKeyCode()⽅法返回getKeyChar(): char 返回这个事件中和键相关的字符getKeyCode(): int 返回这个事件中和键相关的整数键keyPressed(e: KeyEvent) 在源组件上按下⼀个键后被调⽤KeyReleased(e: KeyEvent) 在源组件上释放⼀个键后被调⽤KeyTyped(e: KeyEvent) 在源组件上按下⼀个键然后释放该键后被调⽤按键常量VK_HOME Home键 VK_CONTROL 控制键VK_END End键 VK_SHIFT shift键VK_PGUP page up键 VK_BACK_SPACE 退格键VK_PGDN page down键 VK_CAPS_LOCK ⼤⼩写锁定键VK_UP 上箭头 VK_NUM_LOCK ⼩键盘锁定键VK_DOWN 下箭头 VK_ENTER 回车键VK_LEFT 左箭头 VK_UNDEFINED 未知键VK_RIGHT 右箭头 VK_F1--VK_F12 F1 -- F12VK_ESCAPE Esc键 VK_0 --VK_9 0 --- 9VK_TAB Tab键 VK_A --VK_Z A----ZgetKeyCode()返回定义在表中的值getKeyChar()返回输⼊的字符1import java.awt.*;2import java.awt.event.*;3import javax.swing.*;45public class KeyEventDemo extends JFrame{6private KeyboardPanel keyboardPanel = new KeyboardPanel();78public KeyEventDemo(){9 add( keyboardPanel);1011 keyboardPanel.setFocusable(true);1213 }1415public static void main(String[] args){16 KeyEventDemo frame = new KeyEventDemo();17 frame.setTitle( "KeyEventDemo");18 frame.setSize(300,300);19 frame.setLocationRelativeTo( null);20 frame.setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);21 frame.setVisible( true);2223 }2425static class KeyboardPanel extends JPanel{26private int x = 100;27private int y = 100;28private char KeyChar = 'A' ;2930public KeyboardPanel(){31 addKeyListener( new KeyAdapter(){32public void keyPressed(KeyEvent e){33switch(e.getKeyCode()){34case KeyEvent.VK_DOWN: y += 10;break;35case KeyEvent.VK_UP: y -= 10; break;36case keyEvent.VK_LEFT: x -= 10; break;37case KeyEvent.VK_RIGHT: x += 10; break;38default: keyChar = e.getKeyChar();39 }4041 repaint();42 }43 });44 }4546protected void paintComponent(Graphics g){47super.paintComponent(g);4849 g.setFont( new Font("TimesRoman" ,Font.PLAIN,24));50 g.drawString(String. valueOf(KeyChar), x, y);51 }52 }53 }。
Java使用Robot类模拟鼠标、键盘事件
Java使⽤Robot类模拟⿏标、键盘事件Robot类⽤于模拟⿏标、键盘事件,⽣成本机系统输⼊事件。
Robot 的主要⽤于⾃动化、⾃运⾏的程序和其他需要⾃动控制⿏标和键盘的程序相当于实际操作的效果,不仅仅只是⽣成对应的⿏标、键盘事件。
⽐如Robot.mouseMove() 将实际移动⿏标光标,⽽不是只⽣成⿏标移动事件。
实现的是本机的全局模拟,不仅仅局限于写的程序和IDERobot类常⽤⽅法:void delay (int ms) 睡眠指定的时间(类似于线程中sleep)void keyPress(int keycode)按下指定的键void keyRelease(int keycode)释放指定的键void mousePress(int buttons)按下⼀个或多个⿏标按键void mouseRelease(int buttons)释放⼀个活多个⿏标按键void mouseMove(int x,int y)将⿏标移动到给定的屏幕坐标上void mouseWheel(int wheelAmt)滚动⿏标滑轮实例:1package my_package;23import java.awt.*;4import java.awt.event.InputEvent;5import java.awt.event.KeyEvent;678/**9 * 利⽤Robot实现⾃动清屏10*/11public class Test {12public static void main(String[] args) throws AWTException {13 System.out.println("ok");14 Robot robot = new Robot();1516//将⿏标移到控制台区域17 robot.mouseMove(300,600);1819//单击右键20 robot.mousePress(InputEvent.BUTTON3_DOWN_MASK);21 robot.mouseRelease(InputEvent.BUTTON3_DOWN_MASK);2223//按CTRL+⼩键盘的数字0,实现清屏。
Java中的鼠标事件和键盘事件
Example18_9/10.java
键盘事件
键盘事件:
按下 释放 敲击键盘上一个键
事件源获得监视器的方法是 addKeyListener(监视器) addKeyListener(监视器) 处理事件源发生事件的接口是 KeyListener,其中方法: KeyListener,其中方法:
keyPressed(KeyEvent e) keyTyped(KeyEvent e):键被按下又释 e):键被按下又释 放时被调用 keyReleased(keyEvent e)
使用MouseListener接口处理鼠 使用MouseListener接口处理鼠 标事件
事件源获得监视器的方法是 addMouseListener(监视器) addMouseListener(监视器) 处理事件源发生事件的接口是 MouseListener,其中方法: MouseListener,其中方法:
mouseDragged(MouseEvent):负责处理鼠标拖 mouseDragged(MouseEvent):负责处理鼠标拖 动事件 MouseMoved(MouseEvent) :负责处理鼠标移动 事件
Example18_6/7.java
控制鼠标的指针形状
可使用setCursor方法,如设置成漏斗: 可使用setCursor方法,如设置成漏斗:
Example18_1/2/3/4/5.java
使用MouseMotionListener接口 使用MouseMotionListener接口 处理鼠标事件
事件源发生的鼠标事件:
拖动鼠标 鼠标移动(鼠标键不按下)
鼠标事件的类型是MouseEvent 鼠标事件的类型是MouseEvent 事件源获得监视器的方法是 addMouseMotionListener(监视器) addMouseMotionListener(监视器) 处理事件源发生事件的接口是 MouseMotionListener,其中方法: MouseMotionListener,其中方法:
Java 中的鼠标事件
18.4 键盘事件
当按下、释放或敲击键盘上一个键时就发生了键盘事件,在Javal.2事件模式 中,必须要有发生事件的事件源。当一个组件处于激活状态时,敲击键盘上 一个键就导致这个组件上发生了键盘事件。 事件源使用addKeyListener(监视器)方法获得监视器。 监视器是一个对象,创建该对象的类必须实现接口KeyListener。接口 KeyListener中有3个方法: public void keyPressed(KeyEvent e) public void keyTyped(KeyEvent e) public void KeyReleased(KeyEvent e) 当你按下键盘上某个键时,监视器就会发现,然后方法keyPressed方法会自 动执行,并且KeyEvet类自动创建一个对象传递给方法keyPressed中的参数e。 方法keyTyped是keyPressed和keyReleased方法的组合,当键被按下又释放时, keyTyped方法被调用。用KeyEvent类的public int getKeyCode()方法,可以 判断哪个键被按下、敲击或释放,getKeyCode方法返回一个键码值(如表所 示)。也可以用KeyEvent类的public char getKeyChar()判断哪个键被按下、 敲击或释放,getKeyChar方法返回键的字符。
在下面例子mouse2.java中,当在画布上按下鼠标左键时,在鼠标位置处绘制 一个圆;当按下鼠标右键时,在鼠标位置处绘制一个矩形:当鼠标退出画布 时,清除绘制的全部图形。 下面的例子mouse3.java分别监视按钮、文本框和容器上的鼠标事件,当发生 鼠标事件时,获取鼠标的坐标值,注意,事件源的坐标系的左上角是坐标源 点
18.2 使用MouseMotionListener接口处理鼠标事件
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上的坐标,并拖曳出直线来。
java键盘鼠标监听
键盘监听器和鼠标监听器键盘监听器键盘监听器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 功能键F1VK_0 数字键0 VK_B 字母键B虚拟键码对应的是键位,不区分大小写。
要想知道大小写还必须查看修饰键(modifier key)。
这由输入事件InputEvent的getModifere()方法得到,把返回值与常量SHIFT_MASK, CONTROL_MASK, ALT_MASK比较,用以判定哪个修饰键处于“同时按下”状态。
监听器KeyListener有三个方法keyPressed(KeyEventevt),keyReleased(KeyEvent evt),keyTyped(KeyEvent evt),分别用于相应事件发生后的处理。
下面的例程中给自己的键盘监听器建立了showKeyEventMsg方法来显示按键信息。
除了getKeyCode()方法得到键码外,还可用getKeyChar()方法得到输入的字符,用getKeyText(code)方法得到输入的字符串。
用isShiftDown()判断shift键是否被按下等。
当按下Control键时getKeyText返回的是“ctrl",Alt和Shift 也类似。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
} } 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"); } }
鼠标监听器 鼠标监听器 mouseListener 监听鼠标事件 MouseEvent。相应事件和处理方法如 下表: 鼠标事件 MOUSE_CLICKED MOUSE_PRESSED MOUSE_RELEASED MOUSE_ENTERED 域) MOUSE_EXITED 区域) 鼠标事件 MouseEvent 常用方法 int getClickCount() int getX(), intseExited (MouseEvent) 鼠标离开 (某组件 处理方法 MouseClicked (MouseEvent) MousePressed (MouseEvent) MouseReleased(MouseEvent) MouseEntered (MouseEvent) 鼠标点击(单或双) 鼠标按下 鼠标松开 鼠标进入(某组件区
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); } }
例 4 本例程演示鼠标监听器,鼠标点击和运动的监听。 /// // MouseEvt.java import java.awt.*; import java.awt.event.*; import javax.swing.*; class MyPanel extends JPanel implements MouseMotionListener{ public MyPanel() { addMouseListener(new MouseAdapter() { public void 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); } public void mouseMoved(MouseEvent evt){ System.out.println("\n 鼠标正在移动"); } public void mouseDragged(MouseEvent evt){ System.out.println("\n 鼠标正在拖动"); } } class MyFrame extends JFrame{ public MyFrame(){ setTitle("鼠标事件示例程序"); setSize(300, 200); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } } ); Container contentPane = getContentPane(); contentPane.add(new MyPanel()); } } public class MouseEvt{ public static void main(String[] args){ JFrame frame = new MyFrame();
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 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();
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