How can I prevent overlapping circles in a JApplet program?

  • Thread starter Thread starter FritoTaco
  • Start date Start date
  • Tags Tags
    Circles Random
AI Thread Summary
The discussion revolves around a Java program using JApplet to generate random circles on a canvas. The main issue is that when the "Generate" button is clicked, new circles overlap the previous ones instead of clearing them. The solution involves modifying the paint method to clear the previous drawings. A suggestion is made to implement a clear method that fills the background with the applet's background color. Ultimately, the resolution is achieved by adding `super.paint(g)` in the paint method, which effectively clears the previous circles before drawing new ones. This adjustment ensures that only the latest set of circles is displayed.
FritoTaco
Messages
132
Reaction score
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
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
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;
    }
 
Thank you! I needed to add super.paint(g) in the paint method. This helped!
 

Attachments

  • 1jtxmu.gif
    1jtxmu.gif
    187.9 KB · Views: 440
  • Like
Likes Borg
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...
Back
Top