Старт анимации не при старте программы, а при нажатии кнопки - 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){ }
- }
- }
- }
У меня вот что получилось но это определённо не то!
Листинг программы
- 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);
- }
- }
- }
Решение задачи: «Старт анимации не при старте программы, а при нажатии кнопки»
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();
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д