import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Frame extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel container;
private JPanel ratePanel, delayPanel, south, numberPanel;
private JButton button1, button2;
private JTextField delayText, rateText, numberText;
private JLabel delayLabel, rateLabel, numberLabel;
private boolean autoclick = false;
private Thread t;
public Frame() {
this.setTitle("Autoclick");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(250, 320);
this.setLocationRelativeTo(null);
this.setResizable(false);
this.setAlwaysOnTop(true);
initComposant();
this.setContentPane(container);
this.setVisible(true);
}
private void initComposant() {
// Delay
delayPanel = new JPanel();
delayPanel.setBorder(BorderFactory.createTitledBorder("Delay"));
delayPanel.setPreferredSize(new Dimension(150, 75));
delayText = new JTextField();
delayText.setPreferredSize(new Dimension(50, 25));
delayLabel = new JLabel("Delay in millisecodns");
delayPanel.add(delayText);
delayPanel.add(delayLabel);
// Rate
ratePanel = new JPanel();
ratePanel.setPreferredSize(new Dimension(150, 75));
ratePanel.setBorder(BorderFactory.createTitledBorder("Rate"));
rateText = new JTextField();
rateText.setPreferredSize(new Dimension(50, 25));
rateLabel = new JLabel("Rate in milliseconds");
ratePanel.add(rateLabel);
ratePanel.add(rateText);
// Number
numberPanel = new JPanel();
numberPanel.setPreferredSize(new Dimension(150, 75));
numberPanel.setBorder(BorderFactory.createTitledBorder("Number"));
numberText = new JTextField();
numberText.setPreferredSize(new Dimension(50, 25));
numberLabel = new JLabel("Number of clicks");
numberPanel.add(numberLabel);
numberPanel.add(numberText);
// Creation du JPanel south
south = new JPanel();
// Création du bouton1 et bouton2 et ajout au JPanel south
this.button1 = new JButton("GO!");
this.button2 = new JButton("STOP!");
this.button1.setEnabled(true);
this.button2.setEnabled(false);
this.button1.addActionListener(new Button1Listener());
this.button2.addActionListener(new Button2Listener());
south.add(this.button1);
south.add(this.button2);
container = new JPanel();
container.add(delayPanel);
container.add(ratePanel);
container.add(numberPanel);
container.add(south, BorderLayout.SOUTH);
}
public void go() {
long rate = Long.parseLong(rateText.getText());
System.out.println(rate);
long delay = Long.parseLong(delayText.getText());
System.out.println(delay);
int number = Integer.parseInt(numberText.getText());
System.out.println(number);
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
}
for (int i = 0; i < number && autoclick; i++) {
try {
Robot robot = new Robot();
try {
Thread.sleep(rate);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);
} catch (InterruptedException ex) {
}
} catch (AWTException e) {
}
}
button2.doClick();
}
// Class qui écoute le 1er bouton
class Button1Listener implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
autoclick = true;
t = new Thread(new AutoClick());
t.start();
button1.setEnabled(false);
button2.setEnabled(true);
}
}
// Class qui écoute le 2nd bouton
class Button2Listener implements ActionListener {
public void actionPerformed(ActionEvent arg0) {
autoclick = false;
button1.setEnabled(true);
button2.setEnabled(false);
}
}
class AutoClick implements Runnable {
public void run() {
go();
}
}
public static void main(String[] args) {
new Frame();
}
}