Robot类java,键入字符串问题
我使用下面的循环,但它只键入第一个字符,其余的都是数字,知道吗Robot类java,键入字符串问题,java,swing,awt,awtrobot,Java,Swing,Awt,Awtrobot,我使用下面的循环,但它只键入第一个字符,其余的都是数字,知道吗 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
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);
}
}
}
import java.awt.*;
导入javax.swing.KeyStroke;
公开课考试{
公共静态void main(字符串[]args)引发AWTException
{
机器人r=新机器人();
字符串s=“面”;
对于(int i=0;i
输出类型:F135
keyPress/Release方法需要一个表示要键入的字符的int值。这些值是由KeyEvent.VK_254;确定的每个字符的键代码???变量 尝试: 然而,即使这样也不能适用于所有角色。例如,在我的键盘上,“%”位于“5”之上。您不能使用VK_百分比。需要的关键冲程是VK_5和换档。没有办法知道键盘的实际映射以自动执行此操作
所以机器人并不是一个好方法。机器人类使用此处定义的键代码,而不是原始字符。你需要这样称呼它:
r.keyPress(KeyEvent.VK_A);
r.keyRelease(KeyEvent.VK_A);
@camickr我对你的scipt做了一个小编辑,以容纳一个字符串而不是一个字母。请在下面找到。它帮助我感谢:)函数调用:
typeCharacter(机器人,“谢谢”)代码>
公共静态void类型字符(机器人,字符串字母)
{
对于(int i=0;i,您还可以将字符串加载到剪贴板,并将其粘贴到任何需要的位置
StringSelection selection = new StringSelection("Hello World");
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, selection);
robo.keyPress(KeyEvent.VK_CONTROL);
robo.keyPress(KeyEvent.VK_V);
robo.keyRelease(KeyEvent.VK_V);
robo.keyRelease(KeyEvent.VK_CONTROL);
如果您创建了一个接收要键入的字符串的函数,您的生活将变得轻松:
public void keyboardString(final String text) {
if (text != null) {
try {
final Robot robot = new Robot();
for (int i = 0; i < text.length(); i++) {
final char ch = text.charAt(i);
final boolean upperCase = Character.isUpperCase(ch);
final int keyCode = KeyEvent.getExtendedKeyCodeForChar(ch);
robot.delay(10);
if (upperCase) {
robot.keyPress(KeyEvent.VK_SHIFT);
}
robot.keyPress(keyCode);
robot.keyRelease(keyCode);
if (upperCase) {
robot.keyRelease(KeyEvent.VK_SHIFT);
}
}
} catch (final Exception e) {
System.out.println(e);
}
}
}
public void键盘字符串(最终字符串文本){
如果(文本!=null){
试一试{
最终机器人=新机器人();
对于(int i=0;i
an我们看到robot的代码了吗?你能给我们看一下程序输出吗?另外,你不应该在for循环中使用i++而不是++i吗?另外,你不需要使用char[]c=s.tocharray();因为你在字符串var s上使用charAt(i)。你可以使用s.length()获得循环的长度“也是。”布里斯勒是这样做的,但同样的做法可能会有所帮助。
StringSelection selection = new StringSelection("Hello World");
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, selection);
robo.keyPress(KeyEvent.VK_CONTROL);
robo.keyPress(KeyEvent.VK_V);
robo.keyRelease(KeyEvent.VK_V);
robo.keyRelease(KeyEvent.VK_CONTROL);
public void keyboardString(final String text) {
if (text != null) {
try {
final Robot robot = new Robot();
for (int i = 0; i < text.length(); i++) {
final char ch = text.charAt(i);
final boolean upperCase = Character.isUpperCase(ch);
final int keyCode = KeyEvent.getExtendedKeyCodeForChar(ch);
robot.delay(10);
if (upperCase) {
robot.keyPress(KeyEvent.VK_SHIFT);
}
robot.keyPress(keyCode);
robot.keyRelease(keyCode);
if (upperCase) {
robot.keyRelease(KeyEvent.VK_SHIFT);
}
}
} catch (final Exception e) {
System.out.println(e);
}
}
}