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(); } }