请问在没有按下键盘的情况下,在后台怎么用程序按下回车事件?意思就是程序直接实现了回车事件触发,就像人按下键盘效果一样。
解决方案 »
- struts像javascript传递参数的问题
- 求助,java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream的问题
- CXF 修改 SOAP 报文?
- 如何让输入的123打印成“一百二十三”
- jsp中的问题,请高手指教!!!~!
- 用Java语言如何拿到MSN中的好友列表.
- 大家帮我看个函数getHibernateCFGFile("/")是什么用法?
- 面署成功了ejb,如何用jsp进行访问
- 如何生成 字符+数字的自增主键 hibernate+oracle
- Spring mvc指定了jsp文件,为什么还是执行默认的index.jsp
- 有关成员变量 继承 隐藏与覆盖的一个问题
- 求助!Annotation 里面设置lazy="false" 的字段是什么?
现在就是想能不能自动触发事件,例如后台直接控制键盘按下Enter键。
试试这个,我是用的jquery的trigger方法
response.setContentType("text/html; charset=UTF-8");
PrintWriter pw=response.getWriter(); pw.print("<script type='text/javascript'>$("document").ready(function(){
$("#你想要按回车的元素的id").trigger(你的回车事件的function);
});</script>"); pw.flush();
pw.close();
这个只能控制自己的页面吧,别人的页面弹出一个widown或dialog,根本拿不到这个window或dialog,更别说操作这个window或dialog的元素的事件了
期待高手来解决一下!小弟感激不尽啊!
import java.awt.Toolkit;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;import javax.swing.JOptionPane;public class T11_ShuBiaoJianPan{
public static void main(String[] args) throws Exception {
final Robot rb = new Robot();
new Thread(){
public void run(){
rb.delay(2000);
//模拟回车
rb.keyPress(KeyEvent.VK_ENTER);
rb.keyRelease(KeyEvent.VK_ENTER);
}
}.start();
JOptionPane.showMessageDialog(null,"以下程序自动执行,包括本对话框,点击运行后请不要移动鼠标和键盘.\n如果不能正常执行程序,请先关闭输入法"); //设置开始菜单的大概位置
int x = 40;
int y = Toolkit.getDefaultToolkit().getScreenSize().height-10; //鼠标移动到开始菜单,
rb.mouseMove(x,y);
rb.delay(500); //单击三次开始菜单
for(int i=0; i<3; i++)
pressMouse(rb,InputEvent.BUTTON1_MASK,500);
rb.delay(1000); //运行CMD命令 r cmd enter
int[] ks = {KeyEvent.VK_R,KeyEvent.VK_C,KeyEvent.VK_M,KeyEvent.VK_D,KeyEvent.VK_ENTER,};
pressKeys(rb,ks,500);
rb.mouseMove(400,400);
rb.delay(500);
//运行DIR命令 dir enter
ks = new int[]{KeyEvent.VK_D,KeyEvent.VK_I,KeyEvent.VK_R,KeyEvent.VK_ENTER};
pressKeys(rb,ks,500);
rb.delay(1000);
//运行CLS命令 cls enter
ks = new int[]{KeyEvent.VK_C,KeyEvent.VK_L,KeyEvent.VK_S,KeyEvent.VK_ENTER};
pressKeys(rb,ks,500);
rb.delay(1000);
//运行EXIT命令 exit enter
ks = new int[]{KeyEvent.VK_E,KeyEvent.VK_X,KeyEvent.VK_I,KeyEvent.VK_T,KeyEvent.VK_ENTER};
pressKeys(rb,ks,500);
rb.delay(1000); //右键测试
x=Toolkit.getDefaultToolkit().getScreenSize().width-10;
rb.mouseMove(x, y);
//如果是双键鼠标,请改用InputEvent.BUTTON2_MASK试试,我没有这种鼠标
pressMouse(rb,InputEvent.BUTTON3_MASK,500);
//显示日期调整对话框 a
pressKeys(rb,new int[]{KeyEvent.VK_A},1000);
rb.delay(2000);
pressKeys(rb,new int[]{KeyEvent.VK_ESCAPE},0);
rb.delay(1000);
new Thread(){
public void run(){
rb.delay(1000);
//回车
rb.keyPress(KeyEvent.VK_ENTER);
rb.keyRelease(KeyEvent.VK_ENTER);
}
}.start();
JOptionPane.showMessageDialog(null,"演示完毕!");
}
//鼠标单击,要双击就连续调用
private static void pressMouse(Robot r,int m,int delay){
r.mousePress(m);
r.delay(10);
r.mouseRelease(m);
r.delay(delay);
}
//键盘输入
private static void pressKeys(Robot r,int[] ks,int delay){
for(int i=0; i<ks.length; i++){
r.keyPress(ks[i]);
r.delay(10);
r.keyRelease(ks[i]);
r.delay(delay);
}
} }
研究下api,研究下键盘按键的keycode
貌似不同键盘的 区位 keycode是不一样的。不知道是不是
Thread thread = new Thread();
robot.keyPress(KeyEvent.VK_ENTER);
thread.sleep(10);
robot.keyRelease(KeyEvent.VK_ENTER);