Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

import java.awt. * ; import java.awt.event. * ; import javax.swing. * ; class Ball { static int defaultDiameter = 1 0 ; static Color defaultColor

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class Ball {
static int defaultDiameter =10;
static Color defaultColor = Color.white;
static Rectangle defaultBox = new Rectangle(0,0,100,100);
private int x, y;
private int dx, dy;
private int diameter;
private Color color;
private Rectangle box;
public Ball( int x0, int y0, int dx0, int dy0){
x = x0;
y = y0;
dx = dx0;
dy = dy0;
color = defaultColor;
diameter = defaultDiameter;
}
public void setColor( Color c ){
color = c;
}
public void setBoundingBox( Rectangle r ){
box = r;
}
public void paint( Graphics g ){
g.setColor( color );
g.fillOval( x, y, diameter, diameter );
}
void constrain(){
int x0= box.x;
int y0= box.y;
int x1= x0+ box.width - diameter;
int y1= y0+ box.height - diameter;
if (x < x0){
dx = Math.abs(dx);
}
if (x > x1){
dx =-Math.abs(dx);
}
if (y < y0){
dy = Math.abs(dy);
}
if (y > y1){
dy =-Math.abs(dy);
}
}
public void action(){
x = x + dx;
y = y + dy;
constrain();
}
}
class BallPanel extends JPanel implements ActionListener {
private int width, height;
private Ball ball;
private Timer timer = new Timer(50, this);
public BallPanel (int width, int height){
this.width = width;
this.height = height;
ball = new Ball( width /10, height /5,5,5);
ball.setBoundingBox( new Rectangle(0,0, width, height ));
timer.start();
}
public void paintComponent( Graphics g ){
g.setColor( Color.black );
g.fillRect(0,0, width, height );
ball.paint( g );
}
public void actionPerformed(ActionEvent e){
if(width != getWidth()|| height != getHeight())
wasResized(getWidth(),getHeight());
ball.action();
repaint();
}
public void wasResized( int newWidth, int newHeight ){
width = newWidth;
height = newHeight;
}
}
class BallWorld extends JFrame {
private BallPanel panel = new BallPanel (180,180);
public BallWorld (){
Container c = getContentPane();
c.add(panel, BorderLayout.CENTER);
setSize(200,200);
setLocation(100,100);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String args[]){
BallWorld world = new BallWorld();
}
}

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Fundamentals Of Database Systems

Authors: Ramez Elmasri, Shamkant B. Navathe

7th Edition Global Edition

1292097612, 978-1292097619

More Books

Students also viewed these Databases questions