Отрисовкой анимации - Java

Узнай цену своей работы

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

Проблемка в том что я циклом пытаюсь заставить кружок двигаться по панели в фрейме при нажатии кнопки старт. а он не хороший человек после задержки перемещается в заданную позицию. как исправить? помогите люди добрые.
Листинг программы
  1. public class MyFrame extends JFrame{
  2. JPanel bPanel;
  3. MyDrawPanel drawPanel;
  4. JButton startButton, stopButton;
  5. StartButtonListener listener = new StartButtonListener();
  6. int x=0,y=50;
  7. MyFrame(String s){
  8. super(s);
  9. bPanel = new JPanel();
  10. drawPanel = new MyDrawPanel();
  11. bPanel.setLayout(new BoxLayout(bPanel, BoxLayout.Y_AXIS));
  12. startButton = new JButton("Start");
  13. stopButton = new JButton("Stop");
  14. bPanel.add(startButton);
  15. bPanel.add(stopButton);
  16. getContentPane().add(BorderLayout.EAST, bPanel);
  17. getContentPane().add(drawPanel);
  18. startButton.addActionListener(listener);
  19. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  20. setSize(500, 500);
  21. setVisible(true);
  22. }
  23. class StartButtonListener implements ActionListener{
  24. @Override
  25. public void actionPerformed(ActionEvent ae) {
  26. if(ae.getSource() == startButton){
  27. for (int i = 0; i < 250; i++) {
  28. x++;
  29. drawPanel.repaint();
  30. try{
  31. Thread.sleep(10);
  32. }catch(Exception e){
  33. }
  34. }
  35. }
  36. }
  37. }
  38. class StopButtonListener implements ActionListener{
  39. @Override
  40. public void actionPerformed(ActionEvent e) {
  41.  
  42. }
  43. }
  44. public class MyDrawPanel extends JPanel{
  45. public void paintComponent(Graphics g) {
  46. g.setColor(Color.white);
  47. g.fillRect(0, 0, this.getWidth(), this.getHeight());
  48. g.setColor(Color.red);
  49. g.fillOval(x, y, 40, 40);
  50. }
  51. }
  52. }
Думаю что проблема в слушателе кнопки. Но не могу найти решение(

Решение задачи: «Отрисовкой анимации»

textual
Листинг программы
  1. Thread thr = new Thread(new Runnable() {
  2.                     @Override
  3.                     public void run() {
  4.                         for (int i = 0; i < 250; i++) {
  5.                             x++;
  6.                             drawPanel.repaint();
  7.                             try {
  8.                                 Thread.sleep(10);
  9.                             } catch (Exception e) {
  10.  
  11.                             }
  12.                         }
  13.                     }
  14.                 });
  15.                 thr.start();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут