Button to increase or decrease the number of the balls

Assignment Help JAVA Programming
Reference no: EM13167861

Simulates a bouncing ball. Extend to allow mulitple balls. You can use the +I or -I button to increase or decrease the number of the balls and use teh Suspend and Resume buttoms to freeze the balls or resume bouncing. For each ball, assign a random color.

I am having trouble getting my program to run. Here is what I came up with:

import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.concurrent.locks.*;
import javax.swing.*;
import javax.swing.border.LineBorder;

public class BouncingBalls extends JApplet {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
JFrame frame = new JFrame();
JApplet applet = new BouncingBalls();

frame.add(applet);

frame.setTitle("BouncingBalls");

frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setDefaultCloseOperation(3);

frame.setSize(400,200);
frame.setVisible(true);
}
public BouncingBalls()
{

add(new BallControl());
}
class BallControl extends JPanel implements ActionListener, AdjustmentListener
{
private Ball ball;
private JButton jbtSuspend;
private JButton jbtResume;
private JButton jbtAdd;
private JButton jbtSubtract;
private JScrollBar jsbDelay;

public BallControl()
{
ball = new Ball();

jbtSuspend = new JButton("Suspend");

jbtResume = new JButton("Resume");

jbtAdd = new JButton("+1");


jbtSubtract = new JButton("-1");
jsbDelay = new JScrollBar();
JPanel panel = new JPanel();

panel.add(jbtSuspend);

panel.add(jbtResume);

panel.add(jbtAdd);

panel.add(jbtSubtract);

ball.setBorder(new LineBorder(Color.red));
jsbDelay.setOrientation(0);
ball.setDelay(jsbDelay.getMaximum());
setLayout(new BorderLayout());
add(jsbDelay, "North");
add(ball, "Center");
add(panel, "South");
jbtSuspend.addActionListener(this);
jbtResume.addActionListener(this);
jbtAdd.addActionListener(this);
jbtSubtract.addActionListener(this);
jsbDelay.addAdjustmentListener(this);
}


class Ball extends JPanel implements Runnable
{

class BallState
{
int x;

int y;
int dx;
int dy;
Color color;

public BallState()
{
x = 0;
y = 0;
dx = 2;
dy = 2;

int r = (int)(Math.random() * 1000) % 256;
int g = (int)(Math.random() * 1000) % 256;
int b = (int)(Math.random() * 1000) % 256;

color = new Color(r,g,b);
}
}
public void add()
{
list.add(new BallState());
}
public void subtract()
{
if(list.size() > 0)
list.remove(list.size() - 1);
}
protected void paintComponent (Graphics g)
{
super.paintComponent(g);

for(int i = 0; i < list.size(); i++);
{
BallState ball;
ball = (BallState)list.get(i);
if(ball.x < radius) ball.dx = Math.abs(ball.dx);
if(ball.x > getWidth() - radius) ball.dx = -Math.abs(ball.dx);
if(ball.y < radius) ball.dy = Math.abs(ball.dy);
if(ball.y > getHeight() - radius) ball.dy = -Math.abs(ball.dy);

ball.x += ball.dx;
ball.y += ball.dy;
g.setColor(ball.color);
g.fillOval(ball.x - radius, ball.y - radius, radius*2, radius*2);
}
}
public void run()
{
try
{
while(true)
{
while(!isSuspended)
{
repaint();
Thread.sleep(speed);
}
lock.lock();
suspended.await();
lock.unlock();
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}

public void resume()
{
lock.lock();
isSuspended = false;
suspended.signalAll();
lock.unlock();
}
public void suspend()
{
lock.lock();
isSuspended = true;
lock.unlock();
}

public void setDelay(int ms)
{
speed = ms;
}
private int speed;
protected Thread timer;
private ArrayList list;
private int x;
private int y;
private int radius ;
private int dx;
private int dy;
boolean isSuspended;
Lock lock;
Condition suspended;

public Ball()
{
speed = 10;
timer = new Thread(this);
list = new ArrayList();
x = 0;
y = 0;
radius = 5;
dx = 2;
dy = 2;
isSuspended = false;
lock = new ReentrantLock();
suspended = lock.newCondition();
timer.start();
}
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == jbtSuspend) ball.suspend();
else
if(e.getSource() == jbtResume) ball.resume();
else
if(e.getSource() == jbtAdd) ball.add();
else

if(e.getSource() == jbtSubtract) ball.subtract();
}
public void adjustmentValueChanged(AdjustmentEvent e)
{
ball.setDelay(jsbDelay.getMaximum() - e.getValue());
}
}

}

 

 

Reference no: EM13167861

Questions Cloud

Logic circuit to figure out how many of the bits : Design a logic circuit to figure out how many of the bits in a 6 bit unsigned number equal 1. Design the simplest possible circuit to accomplish this.
How much of that total is interest : How much do you need to invest today to have $500,000 30 years in the future and how much of that total is interest?
Prove that p(y|x=x)~bin(n-x,b/1-a) : Prove that p(y|X=x)~Bin(n-x,b/1-a) where x,y,z have multinomial distribution with parameters a,b,c and n.
Determine the patient body temperature in fahrenheit : A robust first grader goes for swimming lessons three times a week, and he enjoys it thoroughly. During the first week of December, he develops an upper respiratory infection, starts coughing continuously, and has a high fever of 39°C.
Button to increase or decrease the number of the balls : Simulates a bouncing ball. Extend to allow mulitple balls. You can use the +I or -I button to increase or decrease the number of the balls and use teh Suspend and Resume buttoms to freeze the balls or resume bouncing. For each ball, assign a random c..
Hierarchy chart and design the logic : Draw the hierarchy chart and design the logic for a program that calculates the projected cost of an automobile trip. Assume that the user's car travels 20 miles per gallon of gas. Design a program that prompts the user for a number of miles drive..
What is the density of the oil : One cup is equivalent to 237. mL. If 1 cup of oil has a mass of 210. g, what is the density of the oil (in grams per cubic centimeter)?
User that will be asked to input the time : Write a code for the following C++ problem. We will have a user that will be asked to input the time of a train traveling in terms of minutes and this minutes is a non-negative integer.
Integer programming formulation for problem : The objective is to minimize the sum of the completion times of all the jobs. Provide an integer programming formulation for this problem.

Reviews

Write a Review

JAVA Programming Questions & Answers

  Recursive factorial program

Write a class Array that encapsulates an array and provides bounds-checked access. Create a recursive factorial program that prompts the user for an integer N and writes out a series of equations representing the calculation of N!.

  Hunt the wumpus game

Reprot on Hunt the Wumpus Game has Source Code listing, screen captures and UML design here and also, may include Javadoc source here.

  Create a gui interface

Create GUI Interface in java programing with these function: Sort by last name and print all employees info, Sort by job title and print all employees info, Sort by weekly salary and print all employees info, search by job title and print that emp..

  Plot pois on a graph

Write a JAVA program that would get the locations of all the POIs from the file and plot them on a map.

  Write a university grading system in java

University grading system maintains number of tables to store, retrieve and manipulate student marks. Write a JAVA program that would simulate a number of cars.

  Wolves and sheep: design a game

This project is designed a game in java. you choose whether you'd like to write a wolf or a sheep agent. Then, you are assigned to either a "sheep" or a "wolf" team.

  Build a graphical user interface for displaying the image

Build a graphical user interface for displaying the image groups (= cluster) in JMJRST. Design and implement using a Swing interface.

  Determine the day of the week for new year''s day

This assignment contains a java project. Project evaluates the day of the week for New Year's Day.

  Write a java windowed application

Write a Java windowed application to do online quiz on general knowledge and the application also displays the quiz result.

  Input pairs of natural numbers

Java program to input pairs of natural numbers.

  Create classes implement java interface

Interface that contains a generic type. Create two classes that implement this interface.

  Java class, array, link list , generic class

These 14 questions covers java class, Array, link list , generic class.

Free Assignment Quote

Assured A++ Grade

Get guaranteed satisfaction & time on delivery in every assignment order you paid with us! We ensure premium quality solution document along with free turntin report!

All rights reserved! Copyrights ©2019-2020 ExpertsMind IT Educational Pvt Ltd