Существует также такой подход, чтобы избежать ретрансляции в роботе:
import java.awt.*;
import java.awt.event.KeyEvent;
import javax.swing.*;
public class KeyEventTest
{
public static void main(String[] args)
{
final JTextField textField = new JTextField(8);
textField.setFont(textField.getFont().deriveFont(18f));
JPanel panel = new JPanel(new GridBagLayout());
panel.add(textField, new GridBagConstraints());
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(panel);
f.setSize(300,160);
f.setLocation(200,200);
f.setVisible(true);
new Thread(new Runnable()
{
public void run()
{
Toolkit toolkit = Toolkit.getDefaultToolkit();
EventQueue queue = toolkit.getSystemEventQueue();
try {
Thread.sleep(1500);
} catch(InterruptedException ie) { }
char newChar = 'x';
queue.postEvent(new KeyEvent(textField,
KeyEvent.KEY_TYPED,
System.currentTimeMillis(),
0,
KeyEvent.VK_UNDEFINED,
newChar));
try {
Thread.sleep(1500);
} catch(InterruptedException ie) { }
queue.postEvent(new KeyEvent(textField,
KeyEvent.KEY_PRESSED,
System.currentTimeMillis(),
0,
KeyEvent.VK_BACK_SPACE,
KeyEvent.CHAR_UNDEFINED));
}
}).start();
}
}
Я должен предупредить вас, что если компонент потеряет фокус, сгенерированные события будут потеряны! D: