java文本框使用Robot实现光标的自动跳转
来源:互联网 发布:archlinux如何配置网络 编辑:程序博客网 时间:2024/06/07 19:44
public class Robotextends Object此类用于为测试自动化、自运行演示程序和其他需要控制鼠标和键盘的应用程序生成本机系统输入事件。Robot 的主要目的是便于 Java 平台实现自动测试。
使用该类生成输入事件与将事件发送到 AWT 事件队列或 AWT 组件的区别在于:事件是在平台的本机输入队列中生成的。例如,Robot.mouseMove 将实际移动鼠标光标,而不是只生成鼠标移动事件。
注意,某些平台需要特定权限或扩展来访问低级输入控件。如果当前平台配置不允许使用输入控件,那么试图构造 Robot 对象时将抛出 AWTException。例如,如果 X 服务器不支持(或没有启用)XTEST 2.2 标准扩展,则 X-Window 系统会抛出异常。
出于自测试之外的目的而使用 Robot 的应用程序应妥善处理这些错误条件。
由于懂得太少
在这里我用18个文本框实现18位身份证的输入,每输入一位后光标自动跳转到后一个文本框,同时用鼠标键盘响应事件控制光标移动
部分源码
ID1 = new JTextField(1);
ID2 = new JTextField(1);
ID3 = new JTextField(1);
ID1.addFocusListener(this);
ID2.addFocusListener(this);
ID3.addFocusListener(this);
ID1.addKeyListener(this);
ID2.addKeyListener(this);
ID3.addKeyListener(this);
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(KeyEvent.VK_LEFT == e.getKeyCode())
{
Robot rb=null;
try {
rb = new Robot();
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//实现shift tab按键,光标前移
rb.keyPress(KeyEvent.VK_SHIFT);
rb.keyPress(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_SHIFT);
}
if(KeyEvent.VK_RIGHT == e.getKeyCode())
{
Robot rb=null;
try {
rb = new Robot();
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//实现tab按键,光标后移
rb.keyPress(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_TAB);
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode()==KeyEvent.VK_0||e.getKeyCode()==KeyEvent.VK_1||e.getKeyCode()==KeyEvent.VK_2||e.getKeyCode()==KeyEvent.VK_3||e.getKeyCode()==KeyEvent.VK_4||e.getKeyCode()==KeyEvent.VK_5||e.getKeyCode()==KeyEvent.VK_6||e.getKeyCode()==KeyEvent.VK_7||e.getKeyCode()==KeyEvent.VK_8||e.getKeyCode()==KeyEvent.VK_9)
{
JTextField jtf = (JTextField)e.getSource();
if(jtf.getText().length()==1)
{
Robot rb=null;
try {
rb = new Robot();
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
rb.keyPress(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_TAB);
}
}
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
JTextField limit = (JTextField)e.getSource();
String key = limit.getText();
if(key.length() >= 1) //保证每个文本框里只输入一位数字
{
e.consume();
}
}
@Override
public void caretUpdate(CaretEvent e) {
// TODO Auto-generated method stub
}
@Override
public void focusGained(FocusEvent e) {
// TODO Auto-generated method stub
if(ID1.isFocusOwner()) //获得焦点就刷新数值
{
ID1.selectAll();
}
if(ID2.isFocusOwner())
{
ID2.selectAll();
}
if(ID3.isFocusOwner())
{
ID3.selectAll();
}
}
博大精深的java略窥皮毛啊 !
在这留下点脚印,留着将来踩踩....
使用该类生成输入事件与将事件发送到 AWT 事件队列或 AWT 组件的区别在于:事件是在平台的本机输入队列中生成的。例如,Robot.mouseMove 将实际移动鼠标光标,而不是只生成鼠标移动事件。
注意,某些平台需要特定权限或扩展来访问低级输入控件。如果当前平台配置不允许使用输入控件,那么试图构造 Robot 对象时将抛出 AWTException。例如,如果 X 服务器不支持(或没有启用)XTEST 2.2 标准扩展,则 X-Window 系统会抛出异常。
出于自测试之外的目的而使用 Robot 的应用程序应妥善处理这些错误条件。
由于懂得太少
在这里我用18个文本框实现18位身份证的输入,每输入一位后光标自动跳转到后一个文本框,同时用鼠标键盘响应事件控制光标移动
部分源码
ID1 = new JTextField(1);
ID2 = new JTextField(1);
ID3 = new JTextField(1);
ID1.addFocusListener(this);
ID2.addFocusListener(this);
ID3.addFocusListener(this);
ID1.addKeyListener(this);
ID2.addKeyListener(this);
ID3.addKeyListener(this);
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(KeyEvent.VK_LEFT == e.getKeyCode())
{
Robot rb=null;
try {
rb = new Robot();
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//实现shift tab按键,光标前移
rb.keyPress(KeyEvent.VK_SHIFT);
rb.keyPress(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_SHIFT);
}
if(KeyEvent.VK_RIGHT == e.getKeyCode())
{
Robot rb=null;
try {
rb = new Robot();
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//实现tab按键,光标后移
rb.keyPress(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_TAB);
}
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getKeyCode()==KeyEvent.VK_0||e.getKeyCode()==KeyEvent.VK_1||e.getKeyCode()==KeyEvent.VK_2||e.getKeyCode()==KeyEvent.VK_3||e.getKeyCode()==KeyEvent.VK_4||e.getKeyCode()==KeyEvent.VK_5||e.getKeyCode()==KeyEvent.VK_6||e.getKeyCode()==KeyEvent.VK_7||e.getKeyCode()==KeyEvent.VK_8||e.getKeyCode()==KeyEvent.VK_9)
{
JTextField jtf = (JTextField)e.getSource();
if(jtf.getText().length()==1)
{
Robot rb=null;
try {
rb = new Robot();
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
rb.keyPress(KeyEvent.VK_TAB);
rb.keyRelease(KeyEvent.VK_TAB);
}
}
}
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
JTextField limit = (JTextField)e.getSource();
String key = limit.getText();
if(key.length() >= 1) //保证每个文本框里只输入一位数字
{
e.consume();
}
}
@Override
public void caretUpdate(CaretEvent e) {
// TODO Auto-generated method stub
}
@Override
public void focusGained(FocusEvent e) {
// TODO Auto-generated method stub
if(ID1.isFocusOwner()) //获得焦点就刷新数值
{
ID1.selectAll();
}
if(ID2.isFocusOwner())
{
ID2.selectAll();
}
if(ID3.isFocusOwner())
{
ID3.selectAll();
}
}
博大精深的java略窥皮毛啊 !
在这留下点脚印,留着将来踩踩....
- java文本框使用Robot实现光标的自动跳转
- 用JavaScript实现的文本框光标定位
- 用java robot编写自己的机器人,实现自动测试
- html中怎么自动获得搜索文本框的光标焦点
- .实现文本框焦点自动跳转及通过回车键提交表单
- JavaScript--简单实现按回车键,光标跳转到后一文本框中和表单提交
- JAVA机器人的使用-ROBOT
- 自写的文本框 输入法框跟随光标 实现方法
- 输入文本框,焦点自动跳转下一个文本框
- 使用AutoCompleteExtender实现文本框自动匹配
- 使用AutoCompleteExtender实现文本框自动匹配
- 使用AutoCompleteExtender实现文本框自动匹配
- 使用AutoCompleteExtender实现文本框自动匹配
- js将光标自动定位到文本框
- 多个文本框,都实现全选;光标进入就自动切换到五笔输入法
- 光标清除文本框的初始值
- 页面自动跳转的实现
- 实现页面的自动跳转
- java保存读取文本oracle
- Qt输入输出
- 深入理解Linux启动过程
- Java列表对对象排序
- 基于Intel_x86体系结构的Linux_SMP系统启动过程
- java文本框使用Robot实现光标的自动跳转
- XML文件处理
- DCL
- java编写比较对象相等equals方法
- 面试sizeof C语言各个类型占用字节书
- LinuxRAR
- 对不起,祖国---我是否扯到你的蛋了!!
- C++拷贝构造函数以及运算符重载例子 (Linux 下编译)
- 正式开始了