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