Use a robot to type characters in Java

2019-01-20 13:34发布

问题:

I know how to have Robot simulate a Y keypress like so:

    Robot.keyPress(KeyEvent.VK_Y);

But how do I get Robot to press a quote and period?:

".  

Can anyone provide me some reference page or sample code?

回答1:

You can't always just use the KeyEvent.VK... variable.

For example on my keyboard the "%" character is above the "5". To use a Robot to type a "5", the code would be:

robot.keyPress(KeyEvent.VK_5); 
robot.keyRelease(KeyEvent.VK_5);

and use a Robot to type a "%", the code would be:

robot.keyPress(KeyEvent.VK_SHIFT); 
robot.keyPress(KeyEvent.VK_5); 
robot.keyRelease(KeyEvent.VK_5);
robot.keyRelease(KeyEvent.VK_SHIFT);


回答2:

If you wanted to use Robot, KeyEvent has VK_QUOTE and VK_PERIOD constants. All of these constants and more are available through the KeyEvent API



回答3:

Previous Robots seem to be deprecated.

For the time being, for JavaFX, there's FXRobot

FXRobot robot = FXRobotFactory.createRobot(scene);
robot.keyPress(KeyCode.QUOTE);
robot.keyPress(KeyCode.PERIOD);


回答4:

What do you mean by "programmatically type these characters?"

You can use a backslash (\) to print a double-quote, but you don't need anything special for the period:

System.out.println("This is a quote symbol: \" and this is a period: .");

Output:

This is a quote symbol: " and this is a period: .


回答5:

Your question is not clear, but to print the characters you can use a stream using the following snippet as a template:

System.out.println("\".");