gpt4 book ai didi

java - 机器人类java,输入字符串问题

转载 作者:行者123 更新时间:2023-12-01 17:45:28 24 4
gpt4 key购买 nike

我正在使用以下循环,但它只输入第一个字符,其余的作为数字,知道吗?

import java.awt.*;

import javax.swing.KeyStroke;

public class test {

public static void main(String[] args) throws AWTException
{
Robot r = new Robot();

String s = "Face";

for (int i = 0; i < s.length(); i++)
{
char res = s.charAt(i);
r.keyPress(res);
r.keyRelease(res);
r.delay(1000);
}
}
}

OUTPUT typing : F135

最佳答案

keyPress/Release 方法需要一个 int 值来表示您要键入的字符。这些值是由 KeyEvent.VK_??? 确定的每个字符的键码。变量。

尝试:

import java.awt.*;
import java.util.*;
import java.lang.reflect.Field;
import java.awt.event.*;
import javax.swing.*;

public class RobotCharacter
{
public static void main(String[] args)
throws Exception
{
JTextField textField = new JTextField(10);

JFrame frame = new JFrame();
frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
frame.add( textField );
frame.pack();
frame.setLocationRelativeTo( null );
frame.setVisible( true );

Robot robot = new Robot();
typeCharacter(robot, "a");
typeCharacter(robot, "b");
typeCharacter(robot, "C");
typeCharacter(robot, "D");
}

public static void typeCharacter(Robot robot, String letter)
{
try
{
boolean upperCase = Character.isUpperCase( letter.charAt(0) );
String variableName = "VK_" + letter.toUpperCase();

Class clazz = KeyEvent.class;
Field field = clazz.getField( variableName );
int keyCode = field.getInt(null);

robot.delay(1000);

if (upperCase) robot.keyPress( KeyEvent.VK_SHIFT );

robot.keyPress( keyCode );
robot.keyRelease( keyCode );

if (upperCase) robot.keyRelease( KeyEvent.VK_SHIFT );
}
catch(Exception e)
{
System.out.println(e);
}
}
}

但是,即使这也不适用于所有角色。例如,在我的键盘上,“%”位于“5”上方。您不能使用 VK_PERCENT。所需的击键是 VK_5 以及 Shift。无法知道键盘的实际映射来自动执行此操作。

所以机器人不是做到这一点的好方法。

关于java - 机器人类java,输入字符串问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60873117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com