Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8784743
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 13, 20262026-06-13T21:10:44+00:00 2026-06-13T21:10:44+00:00

My basic bouncing ball Applet should have a ball moving around according to the

  • 0

My basic bouncing ball Applet should have a ball moving around according to the values in loc variable, but nothing shows up. Printing out loc shows that the numbers/math behind moving it around and bouncing off boundaries is indeed working as it should, but nothing shows up. Looking at examples online I didn’t see why my drawing/painting code wasn’t working as intended. Here’s what I have, issues are probably focused about halfway down where the Ball object is. I posted most of the program as it does compile/run if someone will run it.

import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Bounce2 extends Applet implements ActionListener, AdjustmentListener, Runnable
{
    //runtime variables
    boolean running = false;
    boolean kill = false;

    //buttons
    Button runbutton = new Button("Run"); 
    Button pausebutton = new Button("Pause");
    Button quitbutton = new Button("Quit");

    //text
    Label speedlabel = new Label("Speed");
    Label sizelabel = new Label("Size");

    //scrollbars
    private final int barHeight = 20, SLIDER_WIDTH = 10, MAXSPEED = 110, MINSPEED = 0, MAX_SIZE = 110, MIN_SIZE = 10;
    Scrollbar speedbar = new Scrollbar(Scrollbar.HORIZONTAL, MAXSPEED/2, SLIDER_WIDTH, MINSPEED, MAXSPEED);
    Scrollbar sizebar = new Scrollbar(Scrollbar.HORIZONTAL, MAX_SIZE/2, SLIDER_WIDTH, MIN_SIZE, MAX_SIZE);

    //drawn objs
    Ball ball;
    int size = 50;  
    private Graphics obj;
    Image offscreen = null;
    Point loc = new Point(100,100); //location of the ball
    private Thread ballThread;

    //boundaries
    int boundx = 640;
    int boundy = 400;

    //directions
    int dx = 1; //1 = left, -1 = right
    int dy = 1; //1 = up, -1 = down

    //speed
    int speed = speedbar.getValue();
    int delay;

    //initialize the applet and draw everything
    public void init()
    {
        double colWeight[] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//15 cols
        double rowWeight[] = {1,1,1,1,1,1,1,1,1,1}; //10 rows
        int colWidth[] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//15 cols
        int rowHeight[] = {1,1,1,1,1,1,1,1,1,1}; //10 rows
        GridBagConstraints c = new GridBagConstraints();
        GridBagLayout gbl = new GridBagLayout();
        gbl.rowHeights = rowHeight;
        gbl.rowWeights = rowWeight;
        gbl.columnWeights = colWeight;
        gbl.columnWidths = colWidth;
        c.anchor = GridBagConstraints.CENTER;

        setBounds(0,0,480,640);
        setLayout(new BorderLayout());
        Panel controlpanel = new Panel();
        controlpanel.setLayout(gbl);
        controlpanel.setSize(640,80);

        Panel drawingpanel = new Panel(null);
        drawingpanel.setSize(640,400);
        ball = new Ball();
        drawingpanel.add(ball);
        drawingpanel.setVisible(true);

        //speed scrollbar
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 3;
        c.gridheight = 1;
        c.gridx = 1;
        c.gridy = 7;
        c.fill= GridBagConstraints.HORIZONTAL;
        gbl.setConstraints(this.speedbar,c);

        //run button
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 2;
        c.gridheight = 1;
        c.gridx = 5;
        c.gridy = 7;
        c.fill= GridBagConstraints.HORIZONTAL;
        gbl.setConstraints(this.runbutton,c);

        //pause button
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 2;
        c.gridheight = 1;
        c.gridx = 8;
        c.gridy = 7;
        c.fill= GridBagConstraints.HORIZONTAL;
        gbl.setConstraints(this.pausebutton,c);

        //size scrollbar
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 3;
        c.gridheight = 1;
        c.gridx = 11;
        c.gridy = 7;
        c.fill= GridBagConstraints.HORIZONTAL;
        gbl.setConstraints(this.sizebar,c);

        //speed text label
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 3;
        c.gridheight = 1;
        c.gridx = 1;
        c.gridy = 8;
        c.fill= GridBagConstraints.HORIZONTAL;
        gbl.setConstraints(this.speedlabel,c);

        //size text label
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 3;
        c.gridheight = 1;
        c.gridx = 11;
        c.gridy = 8;
        c.fill= GridBagConstraints.HORIZONTAL;
        gbl.setConstraints(this.sizelabel,c);

        //quit button
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 3;
        c.gridheight = 1;
        c.gridx = 6;
        c.gridy = 9;
        c.fill= GridBagConstraints.HORIZONTAL;
        gbl.setConstraints(this.quitbutton,c);

        //add to the screen
        controlpanel.add(this.speedbar);
        controlpanel.add(this.runbutton);
        controlpanel.add(this.pausebutton);
        controlpanel.add(this.sizebar);
        controlpanel.add(this.speedlabel);
        controlpanel.add(this.sizelabel);
        controlpanel.add(this.quitbutton);

        //add listners
        speedbar.addAdjustmentListener(this);
        runbutton.addActionListener(this);
        pausebutton.addActionListener(this);
        sizebar.addAdjustmentListener(this);
        quitbutton.addActionListener(this);

        //add the panels
        add("South", controlpanel);
        add("Center", drawingpanel);

        //drawing paramaters
        obj = drawingpanel.getGraphics();
        loc = new Point(loc.x+dx, loc.y+dy);

        setVisible(true);
        validate();
    }

    public void start()
    {
        if (ballThread == null)
        {
            ballThread = new Thread(this);
            ballThread.start();
            repaint();
        }
    }

    public void run()
    {
        Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
        while (!kill)
        {
            if (running)
            {
                repaint();
            }
            try
            {
                Thread.sleep(delay);
            }
            catch(InterruptedException e){System.err.println("Interrupted.");}
        }
        stop();
    }

    //class to handle animations
    class Ball extends Canvas 
    {
        public void move()
        {
            //if it will hit the right or left, flip the x direction and set it 
            if (loc.x+size >= boundx || loc.x <= 0)
            { dx *= -1; }
            loc.x += dx;
            //if it will hit the top or bottom, flip the y direction and set it
            if (loc.y+size >= boundy || loc.y <= 0)
            { dy *= -1; }
            loc.y += dy;
            setBounds(dx,dy,size,size);
        }   

        public void paint(Graphics g)
        {
            update(g);
        }

        public void update(Graphics g)
        {
            Graphics buffer;
            if (offscreen == null);
            {
                offscreen = createImage(boundx, boundy);
                buffer = offscreen.getGraphics();
            }

            buffer.setColor(getBackground());
            buffer.fillRect(loc.x,loc.y,boundx, boundy);
            //update loc
            move();

            //draw
            buffer.setColor(Color.black);
            buffer.drawOval(loc.x, loc.y, size, size);
            buffer.fillOval(loc.x, loc.y, size, size);

            //draw rectangles out of vector 
            super.paint(g);
            g.drawImage(offscreen, loc.x, loc.y, null);
        }
    }

    public void actionPerformed(ActionEvent e)
    {
        Object source = e.getSource();
        if (source == this.runbutton)
        {
            running = true;
        }
        else if (source == this.pausebutton)
        {
            running = false;
        }
        else if (source == this.quitbutton)
        {
            //kill processes
            kill = true;
            //remove listeners
            stop();
        }
    }

    public void adjustmentValueChanged(AdjustmentEvent e)
    {
        Object source = e.getSource();
        //set the new size. 
        if (source == sizebar)
        {
            //check for clipping
            int newsize = sizebar.getValue();

            // x
            if (loc.x+newsize >= boundx)
            { 
                newsize = boundx - loc.x - 1;
                sizebar.setValue(newsize);
            }

            // y
            if (loc.y+newsize >= boundy + 100)
            {
                newsize = boundy+100 - loc.y - 1;
                sizebar.setValue(newsize);
            }
            size = newsize;
        }
        if (source == speedbar)
        {
            speed = speedbar.getValue();
            delay = MAXSPEED - speedbar.getValue();
        }
    }

    public void stop()
    {
        this.speedbar.removeAdjustmentListener(this);
        this.runbutton.removeActionListener(this);
        this.pausebutton.removeActionListener(this);
        this.sizebar.removeAdjustmentListener(this);
        this.quitbutton.removeActionListener(this);
        Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
    }
}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-13T21:10:46+00:00Added an answer on June 13, 2026 at 9:10 pm

    This is modified version of your code that is running.

    import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;
    
    public class Bounce2 extends Applet implements ActionListener, AdjustmentListener, Runnable
    {
      //runtime variables
      boolean running = false;
      boolean kill = false;
    
      //buttons
      Button runbutton = new Button("Run");
      Button pausebutton = new Button("Pause");
      Button quitbutton = new Button("Quit");
    
      //text
      Label speedlabel = new Label("Speed");
      Label sizelabel = new Label("Size");
    
      Panel drawingpanel;
    
      //scrollbars
      private final int barHeight = 20, SLIDER_WIDTH = 10, MAXSPEED = 110, MINSPEED = 0, MAX_SIZE = 110, MIN_SIZE = 10;
      Scrollbar speedbar = new Scrollbar(Scrollbar.HORIZONTAL, MAXSPEED/2, SLIDER_WIDTH, MINSPEED, MAXSPEED);
      Scrollbar sizebar = new Scrollbar(Scrollbar.HORIZONTAL, MAX_SIZE/2, SLIDER_WIDTH, MIN_SIZE, MAX_SIZE);
    
      //drawn objs
      Ball ball;
      int size = 50;
      private Graphics obj;
      Image offscreen = null;
      Point loc = new Point(100,100); //location of the ball
      private Thread ballThread;
    
      //boundaries
      int boundx = 640;
      int boundy = 400;
    
      //directions
      int dx = 1; //1 = left, -1 = right
      int dy = 1; //1 = up, -1 = down
    
      //speed
      int speed = speedbar.getValue();
      int delay = 3000;
    
      //initialize the applet and draw everything
      public void init()
      {
        double colWeight[] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//15 cols
        double rowWeight[] = {1,1,1,1,1,1,1,1,1,1}; //10 rows
        int colWidth[] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};//15 cols
        int rowHeight[] = {1,1,1,1,1,1,1,1,1,1}; //10 rows
        GridBagConstraints c = new GridBagConstraints();
        GridBagLayout gbl = new GridBagLayout();
        gbl.rowHeights = rowHeight;
        gbl.rowWeights = rowWeight;
        gbl.columnWeights = colWeight;
        gbl.columnWidths = colWidth;
        c.anchor = GridBagConstraints.CENTER;
    
        setBounds(0,0,480,640);
        setLayout(new BorderLayout());
        Panel controlpanel = new Panel();
        controlpanel.setLayout(gbl);
        controlpanel.setSize(640,80);
    
        drawingpanel = new Panel();
        drawingpanel.setSize(640,400);
        ball = new Ball();
        drawingpanel.setLayout(new BorderLayout());
        drawingpanel.add("Center",ball);
    
        //speed scrollbar
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 3;
        c.gridheight = 1;
        c.gridx = 1;
        c.gridy = 7;
        c.fill= GridBagConstraints.HORIZONTAL;
        gbl.setConstraints(this.speedbar,c);
    
        //run button
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 2;
        c.gridheight = 1;
        c.gridx = 5;
        c.gridy = 7;
        c.fill= GridBagConstraints.HORIZONTAL;
        gbl.setConstraints(this.runbutton,c);
    
        //pause button
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 2;
        c.gridheight = 1;
        c.gridx = 8;
        c.gridy = 7;
        c.fill= GridBagConstraints.HORIZONTAL;
        gbl.setConstraints(this.pausebutton,c);
    
        //size scrollbar
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 3;
        c.gridheight = 1;
        c.gridx = 11;
        c.gridy = 7;
        c.fill= GridBagConstraints.HORIZONTAL;
        gbl.setConstraints(this.sizebar,c);
    
        //speed text label
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 3;
        c.gridheight = 1;
        c.gridx = 1;
        c.gridy = 8;
        c.fill= GridBagConstraints.HORIZONTAL;
        gbl.setConstraints(this.speedlabel,c);
    
        //size text label
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 3;
        c.gridheight = 1;
        c.gridx = 11;
        c.gridy = 8;
        c.fill= GridBagConstraints.HORIZONTAL;
        gbl.setConstraints(this.sizelabel,c);
    
        //quit button
        c.weightx = 1;
        c.weighty = 1;
        c.gridwidth = 3;
        c.gridheight = 1;
        c.gridx = 6;
        c.gridy = 9;
        c.fill= GridBagConstraints.HORIZONTAL;
        gbl.setConstraints(this.quitbutton,c);
    
        //add to the screen
        controlpanel.add(this.speedbar);
        controlpanel.add(this.runbutton);
        controlpanel.add(this.pausebutton);
        controlpanel.add(this.sizebar);
        controlpanel.add(this.speedlabel);
        controlpanel.add(this.sizelabel);
        controlpanel.add(this.quitbutton);
    
        //add listners
        speedbar.addAdjustmentListener(this);
        runbutton.addActionListener(this);
        pausebutton.addActionListener(this);
        sizebar.addAdjustmentListener(this);
        quitbutton.addActionListener(this);
    
        //add the panels
        add("South", controlpanel);
        add("Center", drawingpanel);
    
        //drawing paramaters
        loc = new Point(loc.x+dx, loc.y+dy);
      }
    
      public void start()
      {
        if (ballThread == null)
        {
          ballThread = new Thread(this);
          ballThread.start();
        }
      }
    
      public void run()
      {
        Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
        while (!kill)
        {
          if (running)
          {
            ball.invalidate();
            ball.repaint();
          }
          try
          {
            Thread.sleep(delay);
          }
          catch(InterruptedException e){System.err.println("Interrupted.");}
        }
        stop();
      }
    
      public void paint(Graphics g){
        super.paint(g);
    
      }
    
      //class to handle animations
      class Ball extends Canvas
      {
        public void move()
        {
          //if it will hit the right or left, flip the x direction and set it
          if (loc.x+size >= boundx || loc.x <= 0)
          { dx *= -1; }
          loc.x += dx;
          //if it will hit the top or bottom, flip the y direction and set it
          if (loc.y+size >= boundy || loc.y <= 0)
          { dy *= -1; }
          loc.y += dy;
        }
    
        public void update(Graphics g)
        {
          super.update(g);
          Graphics buffer;
          if (offscreen == null)
          {
            offscreen = createImage(getWidth(), getHeight());
          }
          buffer = offscreen.getGraphics();
          mypaint(buffer);
          g.drawImage(offscreen, 0, 0, this);
    
        }
    
        public void mypaint(Graphics g)
        {
          g.setColor(getBackground());
          g.fillRect(loc.x,loc.y,boundx, boundy);
    
          //update loc
          move();
    
          //draw
          g.setColor(Color.BLACK);
          g.drawOval(loc.x, loc.y, size, size);
          g.fillOval(loc.x, loc.y, size, size);
    
          //draw rectangles out of vector
        }
      }
    
      public void actionPerformed(ActionEvent e)
      {
        Object source = e.getSource();
        if (source == this.runbutton)
        {
          running = true;
        }
        else if (source == this.pausebutton)
        {
          running = false;
        }
        else if (source == this.quitbutton)
        {
          //kill processes
          kill = true;
          //remove listeners
          stop();
        }
      }
    
      public void adjustmentValueChanged(AdjustmentEvent e)
      {
        Object source = e.getSource();
        //set the new size.
        if (source == sizebar)
        {
          //check for clipping
          int newsize = sizebar.getValue();
    
          // x
          if (loc.x+newsize >= boundx)
          {
            newsize = boundx - loc.x - 1;
            sizebar.setValue(newsize);
          }
    
          // y
          if (loc.y+newsize >= boundy + 100)
          {
            newsize = boundy+100 - loc.y - 1;
            sizebar.setValue(newsize);
          }
          size = newsize;
        }
        if (source == speedbar)
        {
          speed = speedbar.getValue();
          delay = MAXSPEED - speedbar.getValue();
        }
      }
    
      public void stop()
      {
        this.speedbar.removeAdjustmentListener(this);
        this.runbutton.removeActionListener(this);
        this.pausebutton.removeActionListener(this);
        this.sizebar.removeAdjustmentListener(this);
        this.quitbutton.removeActionListener(this);
        Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
      }
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have an applet written using only AWT, that has a customizable bouncing ball
Let's say I have circle bouncing around inside a rectangular area. At some point
Basic question, but I can't figure it out...I have a label with an accelerator
Basic problem I have some large, but logically organised documents - and would like
basic Awk question, but I can't seem to find an answer anywhere: I have
Basic question here - I have many lines of code that look something like:
Basic question here. I started using ARC and am not sure if I should
Basic C# syntax question: So I have this class public class BrandQuery<T> : Query<T>
Basic question so I feel dumb but..., Whats the proper syntax below in the
basic c++ question i'm fairly sure. if i have a base class with a

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.