Graphics2D ....

Hi Experts,
 
   I tried to make a moving circle, but I got  mistakes at line 00 & line 01 ? Does anyone know what I did wrong ? thanks.
 
//------------------------------------------
import java.lang.* ;
import javax.swing.*;
import javax.swing.event.* ;
import java.awt.* ;
import java.awt.event.* ;
import java.awt.image.BufferedImage;


public class MovingFigs extends JFrame{
    private MovingItem movingCircle, movingRec ;
    /** Creates a new instance of Main */
    public MovingFigs() {
       
       
         javax.swing.Timer circleTimer = new Timer(1000, movingCircle);
         circleTimer.start();
   
      setSize(400,400) ;
      show();
    }
   
    class MovingItem implements ActionListener {
       
          Graphics2D myCircle ;
          int x = 30, y = 30;
          final int DELTA_X =10;
       
          myCircle.setColor(Color.red) ;             // line 00
          myCircle.fillOval(30,30,60,60) ;           //  line 01
          public void actionPerformed(ActionEvent e) {
               x += DELTA_X;
               myCircle.fillOval(x, y, x+60, y);
          }
     }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
    }
   
}
LVL 1
meow00Asked:
Who is Participating?
 
CEHJCommented:
Repaint makes the component paint itself again without worrying about passing the parameter (Graphics g)
0
 
CEHJCommented:
If you want to paint on your frame, you'll have to override its paint method:

import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;

public class MovingFigs extends JFrame {
      private MovingItem movingCircle, movingRec;
      int x = 30, y = 30;
      final int DELTA_X = 10;

      public MovingFigs() {
            javax.swing.Timer circleTimer = new Timer(500, new MovingItem());
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            circleTimer.start();
            setSize(400, 400);
            show();
      }

      class MovingItem implements ActionListener {
            public void actionPerformed(ActionEvent e) {
                  // Cause the ball to move
                  repaint();
            }
      }


      public void paint(Graphics g) {
            Graphics2D g2d = (Graphics2D) g.create();
            g2d.clearRect(0, 0, getWidth(), getHeight());
            g2d.setPaint(Color.red);
            x += DELTA_X;
            g2d.fillOval(x, y, y, y);
            g2d.drawOval(x, y, y, y);
            g2d.dispose();
      }

      public static void main(String[] args) {
            new MovingFigs();
      }

}
0
 
meow00Author Commented:
err ..... in the :
-------------------
class MovingItem implements ActionListener {
          public void actionPerformed(ActionEvent e) {
               // Cause the ball to move
               repaint();
          }
     }
-------------------------
why does it call repaint() rather than paint ? thanks !
0
 
CEHJCommented:
8-)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.