【发布时间】:2015-07-19 02:18:53
【问题描述】:
我想模拟 JTextArea 上的按键。我会使用 Robot 类,但我想输入的窗口没有焦点。所以我有这样一个场景:
public class Test {
public static void main(String[] args) {
Frame frame = new Frame();
JTextArea text = new JTextArea();
frame.add(text);
frame.pack();
frame.setVisible(true);
text.dispatchEvent(new KeyEvent(text,
KeyEvent.KEY_TYPED, 0,
0,
KeyEvent.VK_UNDEFINED, 'H'));
text.dispatchEvent(new KeyEvent(text,
KeyEvent.KEY_TYPED, 0,
0,
KeyEvent.VK_UNDEFINED, 'L'));
}
}
但是在输入H之后,插入符号没有向右移动,导致L在H之前输入:该区域的最终文本是LH,但我希望它是HL。
我可以在 H 和 L 之间调度一个新的键事件,该事件将向右移动插入符号(向右箭头)或调用 setCaretPosition 并且这会起作用,但我正在寻找一种不会手动移动插入符号的解决方案并且行为就像一个人打字(我正在制作一个测试器来测试学生的作业)。
有什么想法吗?
【问题讨论】:
标签: java swing simulation jtextarea