title: Multiple Graphics2D Objects
body: <p>I have a Graphics object of JPanel and that is working fine:</p>
  
  <pre><code>import java.awt.Color;
  import java.awt.Graphics;
  import java.awt.Graphics2D;
  import java.awt.geom.Rectangle2D;
  import javax.swing.JPanel;
  
  public class GraphicsTest extends JPanel
  {
      private Graphics2D g2d;
      private String state;
      private int x, y;
  
      @Override
      public void paintComponent(Graphics g)
      {
          super.paintComponent(g);
          g2d = (Graphics2D) g;
          g2d.setClip(0, 0, getWidth(), getHeight());
  
          g2d.setColor(Color.BLACK);
          g2d.drawString("STATE: " + state, 5, 15);
          g2d.drawString("Mouse Position: " + x + ", " + y, 5, 30);
  
          g2d.setColor(Color.red);
          Rectangle2D r2d = new Rectangle2D.Double(x,y,10,10);
          g2d.draw(r2d);
          Test t = new Test();
          super.add(t);
  
          repaint();
      }
  
      public void setState(String state) { this.state = state; }
      public String getState() { return state; }
  
      public void setX(int x) { this.x = x; }
      public void setY(int y) { this.y = y; }
  }
  </code></pre>
  
  <p>I was experimenting with a new Graphics component and when I instantiate a new Test and add it in GraphicsTest nothing happens. What is it that I am doing wrong?</p>
  
  <pre><code>import java.awt.Color;
  import java.awt.Graphics;
  import java.awt.Graphics2D;
  import java.awt.geom.Rectangle2D;
  import javax.swing.JComponent;
  
  public class Test extends JComponent
  {
      private Graphics2D g2d;
      private String state;
      private int x, y;
  
      @Override
      public void paintComponent(Graphics g)
      {
          super.paintComponent(g);
          g2d = (Graphics2D) g.create();
  
          g2d.setColor(Color.GREEN);
          g2d.fill(new Rectangle2D.Double(60, 60,
                  10, 10));
  
          repaint();
      }
  
      public void setState(String state) { this.state = state; }
      public String getState() { return state; }
  
      public void setX(int x) { this.x = x; }
      public void setY(int y) { this.y = y; }
  
  }
  </code></pre>
  
  <p>Thanks! </p>