25-GUI-06-GUI(键盘事件)
2015-08-11 16:48
381 查看
package demo; import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.TextField; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class KeyListenerDemo { private Frame f; private TextField tf; private Button but; public KeyListenerDemo(){ init(); } private void init() { f = new Frame("演示键盘监听"); f.setBounds(200, 100, 500, 400); f.setLayout(new FlowLayout()); but = new Button("一个按钮"); f.add(but); tf = new TextField(15); f.add(tf); myEvent(); f.setVisible(true); } private void myEvent() { f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); //给文本框添加键盘监听 /* * 【添加监听器的思考步骤】 * 1.确定事件源 * 2.确定事件监听器(鼠标、动作还是键盘) * 3.确定用什么动作监听(如单击鼠标、双击鼠标等等) * * 【注意】除了action等两三个外,监听器一般具备适配器Adapter */ /* * java.awt包与java.awt.event包的区别:java.awt里都是组件,java.awt.event里都是事件对象和监听对象。 * * 点开java.awt.event包,找到KeyListener,其内有三个方法: * * (1)void keyPressed(KeyEvent e):按下某个键时调用此方法。 * (2)void keyReleased(KeyEvent e):释放某个键时调用此方法。 * (3)void keyTyped(KeyEvent e):键入某个键时调用此方法。 * */ tf.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { // System.out.println("key run..."+KeyEvent.getKeyText(e.getKeyCode())); /* * e.getKeyCode()是获取当前所按下键对应的编码(如a对应97),KeyEvent.getKeyText是获取编码对应的按键名称,所以 * KeyEvent.getKeyText(e.getKeyCode())拿到的就是当前按下什么键 */ /* * 【需求】只能在文本框输入数字 * 打开API,点进java.awt.event包,找到KeyListener接口,通过其内方法点进KeyEvent类,发现其内的字段摘要中,已经将 * 键盘上的按键名称全部定义static final类型,方便直接调用。那么我们只需要判断当前键盘按键是不是0~9即可。 */ int code = e.getKeyCode();//先获取当前按键对应的编码 if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)){//根据编码判断是否为0~9数字 System.out.println("wrong input"); e.consume(); } /* * 【对e.consume()说明】 * 希望文本框中只能输入数字,那么输入别的内容(如字母)不应该出现在文本框中,直接在控制台输出wrong input,在KeyEvent中 * 没找到能满足需求的方法,那么去找其父类InputEvent,其内有方法: * * public void consume():使用此事件,以便不会按照默认的方式由产生此事件的源代码来处理此事件。 * 键盘输入后,默认方式是直接显示在文本框,那么这里可用consume()方法使其不按默认方式,即不显示在文本框 * * 所以如果以上if条件满足,表示键盘输入的不是数字,那么wrong input且不显示在文本框。 * (e是KeyEvent类,可以直接调用其父类方法consume) */ /* * 模拟QQ发送消息操作:按下ctrl+enter发送消息,代码如下: * * if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER) * System.out.println("QQ来了"); * * isControlDown()是判断当前按下的是否为ctrl键,e.getKeyCode()==KeyEvent.VK_ENTER是判断当前按键的编码是否等于 * 回车键的编码 */ } }); } public static void main(String[] args){ new KeyListenerDemo(); } }
相关文章推荐
- 25-GUI-04-GUI(ActionListener演示)
- 25-GUI-02-GUI(Frame演示)
- 25-GUI-03-GUI(事件监听机制)
- iOS入门(二十七)视图控制器UIViewController
- 25-GUI-01-GUI(概述)
- H-ui字体图标
- UITabBarController
- UIStoryboardSegue(多控制器)
- UIWindow
- iOS入门(二十四)UIView
- Version和Build的区别
- UIScrollView
- hdoj-1242-Rescue【广搜+优先队列】
- UIImageVIew
- UIButton&UILabel
- IOS第八天(4:UITableViewController新浪微博, 代码创建布局和数据转模型)
- UI初识
- Easyui 表格datagrid 的单元格内容显示方式扩展
- Easy UI的树形菜单的异步加载
- FlexBuilder远程调试WEB应用