Старт анимации не при старте программы, а при нажатии кнопки - Java

Формулировка задачи:

Всем привет, как можно переделать нижеприведённый код чтобы анимация срабатывала не при старте программы а при нажатии кнопки?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class JavaApplication12 {
    JButton button;
    JFrame frame;
    int x = 70;
    int y = 70;
   
   
    public static void main(String[] args) {
        JavaApplication12 gui = new JavaApplication12();
        gui.go();
    }
   
   
   
    class MyDrawPanel extends JPanel  {
    @Override
    public void paintComponent(Graphics g){
        g.setColor(Color.white);
        g.fillRect(0,0, this.getWidth(), this.getHeight());
       
        g.setColor(Color.green);
        g.fillOval(x,y,40,40) ;
       
       
    }      
 
    }
 
 
    public void go(){
        frame = new JFrame();
       
        MyDrawPanel drawPanel = new MyDrawPanel();
        frame.getContentPane().add(drawPanel);
 
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
 
        frame.setSize(300,300);
        frame.setVisible(true);
       
        for(int i=0; i<130; i++){
            x++;
            y++;
           
            drawPanel.repaint();
            try{
                Thread.sleep(50);
            }catch(Exception ex){ }
        }
    }
 
 
}
Покажите как это можно сделать?Добавлено через 25 минутУ меня вот что получилось но это определённо не то!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
 
public class JavaApplication12 {
    JButton button;
    JFrame frame;
    int x = 70;
    int y = 70;
   
   
    public static void main(String[] args) {
        JavaApplication12 gui = new JavaApplication12();
        gui.go();
    }
   
   
   
    class MyDrawPanel extends JPanel implements ActionListener {
    @Override
    public void paintComponent(Graphics g){
        g.setColor(Color.white);
        g.fillRect(0,0, this.getWidth(), this.getHeight());
       
        g.setColor(Color.green);
        g.fillOval(x,y,40,40) ;
 
    }
     
   
    @Override
    public void actionPerformed(ActionEvent e) {
        for(int i=0; i<130; i++){
            x++;
            y++;
           
            this.repaint();
            try{
                Thread.sleep(50);
            }catch(Exception ex){ }
        }
       
    }
   
   
       
 
    }
 
 
    public void go(){
        frame = new JFrame();
     
        button = new JButton("Click me");
       
        MyDrawPanel drawPanel = new MyDrawPanel();
        frame.getContentPane().add(drawPanel);
        button.addActionListener(drawPanel);
       
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.getContentPane().add(button, BorderLayout.SOUTH);
 
        frame.setSize(300,300);
        frame.setVisible(true);
       
        }
    }
}

Код к задаче: «Старт анимации не при старте программы, а при нажатии кнопки - Java»

textual
@Override                                  
public void actionPerformed(ActionEvent e) {
    new Thread(() -> {                      
        for (int i = 0; i < 130; i++) {    
            x++;                            
            y++;                            
                                           
            this.repaint();                
            try {                          
                Thread.sleep(50);          
            } catch (Exception ex) {        
            }                              
        }                                  
    }).start();                            
}

6   голосов, оценка 4.167 из 5


СОХРАНИТЬ ССЫЛКУ