java.awt.Robot keyPress() 方法输入错误

标签 java

我的程序遇到错误。不是编译错误,而是程序本身执行时的错误。当调用我的 type() 方法时,当且仅当没有大写字母时才会键入字符串(我已尝试更改字符串)。并且正在键入随机字符来代替字符串的字符。任何有用的见解,或者只是知道我并不孤单,将不胜感激。谢谢!

import java.awt.AWTException;
import java.awt.Robot;
import javax.swing.JOptionPane;
import java.awt.event.KeyEvent;
import java.lang.Character;
import java.lang.IllegalArgumentException;
public class TicketMaker
{
    public static void main(String[] args) throws InterruptedException
    {
        Robot robot = null;
        String lottoMessage = "Vindex Lotto Ticket # ";
        JOptionPane.showMessageDialog(null,"Running program", "Ticket Master", JOptionPane.PLAIN_MESSAGE);
        Thread.sleep(4000);
        try
        {
            robot = new Robot(); 
        }
        catch(AWTException e)
        {
            String err = "Could not instantiate Robot class!";
            errprint(err);
            System.exit(-1);
        }


        try
        {
             robot.keyPress(KeyEvent.VK_E); //Open book
             Thread.sleep(2000);
             type(lottoMessage, robot);
        }
        catch(IllegalArgumentException e)
        {
            errprint("Could not begin book writing"); 
        }
    }
    public static void errprint(String m)
    {
        JOptionPane.showMessageDialog(null,"Error! " + m);
    }
    public static void type(String toType, Robot robo)
    {
         char character;
         int ascii;
         int limit = toType.length(); //11
         int i;
         for( i = 0; i < limit; i++)
         {
            character = toType.charAt(i);
            ascii = (int)character;
            robo.keyPress(ascii);
         }
     try
     {
        Thread.sleep(500);
     }
     catch(InterruptedException e)
     {
        errprint("Sleep failed!");
     }
    }
}

最佳答案

如果您想通过机器人发送大写字母,您必须输入类次。也适用于数字上方的任何特殊字符。机器人的工作方式与在您自己的键盘上打字完全相同。

robot.keyPress(KeyEvent.VK_SHIFT);

调用 keyPress 后,调用 keyRelease 来模拟手指离开按键。

关于java.awt.Robot keyPress() 方法输入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47244239/

相关文章:

java - org.hibernate.exception.GenericJDBCException : could not execute query

java - java中的 vector 排序

java - 在 Android Q 中从外部存储访问照片

java - 通过Intellij调试时跳转到单击Jbutton时执行的方法

java - 有没有办法在 Eclipse 中对括号进行颜色编码?

java - 在 ComboBox 中显示两个或多个属性?

java - 我已经设法编译了 java 程序,但我无法执行它

java - Jackson - 反序列化 JSON 字符串 - TypeReference 与 TypeFactory.constructCollectionType

java - 使用 JPA (+Hibernate) 继承抽象类

java - 如何检查文本文件中的空格