JAVA:事件监听器之键盘监听
作者:@keenleung
本文为作者原创,转载请注明出处:https://www.cnblogs.com/KeenLeung/archive/2012/05/27/2520657.html
目录
addKeyListener
java.awt.event
接口 KeyListener
addKeyListener
public void addKeyListener(KeyListener l)
添加指定的按键侦听器,以接收发自此组件的按键事件。如果 l 为 null,则不会抛出异常并且不执行动作。
java.awt.event
接口 KeyListener
用于接收键盘事件(击键)的侦听器接口。旨在处理键盘事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象 KeyAdapter
类(仅重写有用的方法)。
然后使用组件的 addKeyListener
方法将从该类所创建的侦听器对象向该组件注册。按下、释放或键入键时生成键盘事件。然后调用侦听器对象中的相关方法并将该 KeyEvent
传递给它。
方法摘要 | |
---|---|
void |
keyPressed(KeyEvent e) 按下某个键时调用此方法。 |
void |
keyReleased(KeyEvent e)
释放某个键时调用此方法。 |
void |
keyTyped(KeyEvent e)
键入某个键时调用此方法。 |
——摘自:JDK6API
例子:
1 import javax.swing.*; 2 import java.awt.*; 3 import java.awt.event.*; 4 public class KeyDemo 5 { 6 //定义该图形中所需的组件的引用 7 private Frame f; 8 private Button bt; 9 private TextField tf; 10 11 //方法 12 KeyDemo()//构造方法 13 { 14 madeFrame(); 15 } 16 17 public void madeFrame() 18 { 19 f = new Frame("My Frame"); 20 21 //对Frame进行基本设置。 22 f.setBounds(300,100,600,500);//对框架的位置和大小进行设置 23 f.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));//设计布局 24 25 bt = new Button("My Button"); 26 tf = new TextField(20); 27 28 //将组件添加到Frame中 29 f.add(tf); 30 f.add(bt); 31 32 //加载一下窗体上的事件 33 myEvent(); 34 35 //显示窗体 36 f.setVisible(true); 37 } 38 39 private void myEvent() 40 { 41 f.addWindowListener(new WindowAdapter()//窗口监听 42 { 43 public void windowClosing(WindowEvent e) 44 { 45 System.out.println("窗体执行关闭!"); 46 System.exit(0); 47 } 48 }); 49 bt.addKeyListener(new KeyAdapter()//键盘监听按钮 50 { 51 public void keyPressed(KeyEvent e) 52 { 53 if(e.getKeyCode()==KeyEvent.VK_ESCAPE) 54 System.exit(0); 55 //组合键 56 else if(e.isControlDown()&&e.getKeyCode()==KeyEvent.VK_ENTER) 57 System.exit(0); 58 else System.out.println(e.getKeyChar()+"..."+KeyEvent.getKeyText(e.getKeyCode())); 59 } 60 61 }); 62 tf.addKeyListener(new KeyAdapter() 63 { 64 public void keyPressed(KeyEvent e) 65 { 66 int code = e.getKeyCode(); 67 if(!(code>=KeyEvent.VK_0&&code<=KeyEvent.VK_9)) 68 { 69 System.out.println(code+"..."+"是非法的"); 70 e.consume(); 71 } 72 } 73 }); 74 } 75 76 public static void main(String[] agrs) 77 { 78 new KeyDemo(); 79 } 80 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架