EventQueue queue = Toolkit.getDefaultToolkit().getSystemEventQueue();
queue.postEvent(new ActionEvent(CloseButton, ActionEvent.ACTION_PERFORMED, "close"));
ActionEvent can be replaced by MouseEvent below:
MouseEvent(btn,MouseEvent.MOUSE_RELEASED,0,MouseEvent.BUTTON1_MASK,1,1,1,false);
There is better way to simulate Event in JAVA, that is Robot. Using it to capture screen and simulate mouse/keyboard event. Below is an example to implement them which are mess and simple, but experienced programer should be able to understand it easily.
import java.awt.AWTException;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.MouseInfo;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SpringLayout;
import javax.swing.SwingUtilities;
public class TestRobot extends JFrame{
private static final long serialVersionUID = -2685546878836679111L;
private static File file = new File("Test11.png"); //Declare file
private JLabel image = new JLabel();
private JButton begin = new JButton("Begin");
private JTextField jtf = new JTextField(" ");
public TestRobot(){
this.getContentPane().setLayout(new BorderLayout());
try {
image.setIcon(new ImageIcon(ImageIO.read(file)));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SpringLayout layout = new SpringLayout();
JPanel beginP = new JPanel();
beginP.setLayout(layout);
beginP.add(begin);
JLabel label = new JLabel("Auto Filled: ");
beginP.add(label);
beginP.add(jtf);
jtf.setSize(100, 25);
layout.putConstraint(SpringLayout.WEST, begin, 5, SpringLayout.WEST, beginP);
layout.putConstraint(SpringLayout.NORTH, begin, 5, SpringLayout.NORTH, beginP);
layout.putConstraint(SpringLayout.WEST, label, 5, SpringLayout.EAST, begin);
layout.putConstraint(SpringLayout.NORTH, label, 5, SpringLayout.NORTH, beginP);
layout.putConstraint(SpringLayout.WEST, jtf, 0, SpringLayout.EAST, label);
layout.putConstraint(SpringLayout.NORTH, jtf, 5, SpringLayout.NORTH, beginP);
this.getContentPane().add(new JLabel(), BorderLayout.LINE_START);
this.getContentPane().add(image, BorderLayout.PAGE_START);
this.getContentPane().add(beginP);
this.setSize(300,300);
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation(((int)d.getWidth() - 300)/2, ((int)d.getHeight() - 300)/2);
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
}
public static void main(String[] args){
final Robot robot;
try {
robot = new Robot();
//1. Capture Screen, it can be used as remote monitoring.
BufferedImage image = robot.createScreenCapture(new Rectangle(0,0,300,200));
ImageIO.write(image, "png", file);
final TestRobot test = new TestRobot();
SwingUtilities.invokeLater(new Runnable(){
public void run() {
test.setVisible(true);
}
});
//Move mouse point
robot.delay(2000);
Point p = test.begin.getLocationOnScreen();
p.x = p.x + test.begin.getSize().width/2;
p.y = p.y + test.begin.getSize().height/2;
Point mp = MouseInfo.getPointerInfo().getLocation();
for(;mp.x != p.x || mp.y != p.y;){
robot.delay(10);
if(mp.x > p.x){
mp.x--;
}else if(mp.x < p.x){
mp.x++;
}
if(mp.y > p.y){
mp.y--;
}else if(mp.y < p.y){
mp.y++;
}
robot.mouseMove(mp.x, mp.y);
}
//
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.delay(200);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
robot.delay(200);
//Request focus for TextField
test.jtf.requestFocus();
robot.delay(200);
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_H);
robot.delay(200);
robot.keyRelease(KeyEvent.VK_H);
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.delay(200);
robot.keyPress(KeyEvent.VK_E);
robot.delay(200);
robot.keyRelease(KeyEvent.VK_E);
robot.delay(200);
robot.keyPress(KeyEvent.VK_L);
robot.delay(200);
robot.keyRelease(KeyEvent.VK_L);
robot.delay(200);
robot.keyPress(KeyEvent.VK_L);
robot.delay(200);
robot.keyRelease(KeyEvent.VK_L);
robot.delay(200);
robot.keyPress(KeyEvent.VK_O);
robot.delay(200);
robot.keyRelease(KeyEvent.VK_O);
robot.delay(200);
robot.keyPress(KeyEvent.VK_COMMA);
robot.delay(200);
robot.keyRelease(KeyEvent.VK_COMMA);
robot.delay(200);
robot.keyPress(KeyEvent.VK_W);
robot.delay(200);
robot.keyRelease(KeyEvent.VK_W);
robot.delay(200);
robot.keyPress(KeyEvent.VK_O);
robot.delay(200);
robot.keyRelease(KeyEvent.VK_O);
robot.delay(200);
robot.keyPress(KeyEvent.VK_R);
robot.delay(200);
robot.keyRelease(KeyEvent.VK_R);
robot.delay(200);
robot.keyPress(KeyEvent.VK_L);
robot.delay(200);
robot.keyRelease(KeyEvent.VK_L);
robot.delay(200);
robot.keyPress(KeyEvent.VK_D);
robot.delay(200);
robot.keyRelease(KeyEvent.VK_D);
robot.delay(200);
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_1);
robot.delay(200);
robot.keyRelease(KeyEvent.VK_1);
robot.keyRelease(KeyEvent.VK_SHIFT);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}