How can I prevent overlapping circles in a JApplet program?

In summary, the program makes circles at random, but the previous set of circles gets erased when the user clicks the "Generate" button.
  • #1
FritoTaco
132
23
Hello,

I have this program where you run the JApplet and it makes circles at random. When you click the "Generate" button, it makes another set of random circles. The problem is, it overlaps the previous set of circles. I want the program to get rid of the previous set and I can't figure out how to do it. Thank you for your help.

Java:
import java.awt.*;
import javax.swing.*;
import java.applet.Applet;
import java.net.URL;
import java.awt.event.*;

public class MilkyWay extends JApplet implements ActionListener
{
    Button Button1;
    public void init() {
        setLayout( new FlowLayout( ) );
        // New button
        Button1 = new Button("Generate");
       
        // add button in japplet
        add(Button1);
       
        // listens for the button
        Button1.addActionListener(this);
    }
    public void drawCircle(Graphics g, int x, int y, int radi) {
        // draws a circle at x,y of radius r
        int red, green, blue;
       
        // choose random colors from rgb
        red = (int) (Math.random() * 256);
        green = (int) (Math.random() * 256);
        blue = (int) (Math.random() * 256);
       
        // set the foreground color
        g.setColor(new Color(red, green, blue));
       
        // draws the Oval
        g.fillOval(x, y, 2*radi, 2*radi);
    } // end of drawCircle
    public void paint( Graphics g ) {
        int x1, y1, radi;
        for (int i=0; i < 100; i++) {
            // displays circles in x/y coordinate boundaries
            x1 = (int) (Math.random()*800);
            y1 = (int) (Math.random()*800);
       
            // math choose random radius
            radi = 5 + (int)(Math.random()*35);
       
            // draw the circle
            drawCircle(g, x1, y1, radi);
        }
    }
   
    public void actionPerformed(ActionEvent e) {
        //repaint
        if (e.getSource() == Button1)
            repaint();
    }
}
 
Technology news on Phys.org
  • #2
You need to put something in your paint method to clear out the previous data. I don't have the method at the top of my head but something like a clear method on g.
 
  • Like
Likes FritoTaco
  • #3
Borg said:
You need to put something in your paint method to clear out the previous data. I don't have the method at the top of my head but something like a clear method on g.

I've looked around online and come across this, would I use this? I would need to manipulate it, but I just wanted to know if you're referring to this.

Java:
public void clear(Graphics g)
    {
        // if(!clear)return; // optional
        g.setColor(getBackground());
        g.fillRect(0,0,(int)this.getWidth(),(int)this.getHeight());
        clear=true;
    }
 
  • #5
Thank you! I needed to add super.paint(g) in the paint method. This helped!
 

Attachments

  • 1jtxmu.gif
    1jtxmu.gif
    187.9 KB · Views: 409
  • Like
Likes Borg

FAQ: How can I prevent overlapping circles in a JApplet program?

1. What is JApplet: Random Circles?

JApplet: Random Circles is a program written in Java that uses the Applet class to display randomly generated circles on a graphical user interface.

2. How does JApplet: Random Circles work?

JApplet: Random Circles uses the Random class to generate random coordinates and sizes for the circles, which are then drawn on the applet using the Graphics class.

3. Can I customize the appearance of the circles?

Yes, you can customize the colors and sizes of the circles by changing the parameters in the code. You can also add other shapes or elements to the applet if desired.

4. Do I need any special software to run JApplet: Random Circles?

Yes, you will need the Java Runtime Environment (JRE) installed on your computer to run JApplet: Random Circles. This can be downloaded for free from the official Java website.

5. Can I save or export the circles created by JApplet: Random Circles?

No, since JApplet: Random Circles is a Java program, the circles can only be viewed on the applet and cannot be saved or exported as an image file. However, you can take a screenshot of the applet to save the image.

Similar threads

Replies
1
Views
1K
Replies
2
Views
1K
Replies
1
Views
2K
Replies
4
Views
4K
Replies
1
Views
1K
Back
Top