一个循环,将使用robot.keyPress键入随机字符



我正在尝试使用robot.keyPress编写一个随机字符。

到目前为止,我已经打开了记事本,在里面写了下来并保存了它。如果我在循环中运行此程序,它将始终以相同的名称保存记事本,从而替换前一个记事本。

我想通过在保存之前键入一个随机字母来保存多个记事本(具有不同的名称(。

要让Robot以快速而肮脏的方式执行随机按键,您需要首先列出可接受的 KeyEvent 常量(a-zA-Z0-9 等(。假设您将该列表放在一起:

int[] keys = new int[]{KeyEvent.VK_A, KeyEvent.VK_B, ... }; // Your list of KeyEvent character constants here, adapt as desired. 
// Start optional for loop here if you want more than 1 random character
int randomValue = ThreadLocalRandom.current().nextInt(0, keys.length);
Robot.keyPress(keys[randomValue]);

根据您的需求进行调整。

这个问题与其说是asbout java.awt.robot,不如说是关于随机值生成。一个简单的解决方案可能是这个。

Random rnd = new Random();
int key = KeyEvent.VK_UNDEFINED;
while (key < KeyEvent.VK_A || key > KeyEvent.VK_Z) {
    key = rnd.nextInt();
}
robot.keyPress(key);

为了避免无用的循环,请使用以下命令:

Random rnd = new Random();
final int range = (KeyEvent.VK_Z + 1) - KeyEvent.VK_A;
int key = Math.abs(rnd.nextInt()) % range;
robot.keyPress(key);

最新更新