Bewegliche Kugel in Java

wenn ich es laufen, das repaint nicht funktioniert. Der Rahmen öffnet und bleibt für 2000ms und dann schließt. sonst, wenn ich entfernen Sie das System.exit(0); Anweisung, es nicht schließt, sondern die gemalte ball immer noch nicht auftaucht.

BallWorld.java

import java.awt.*;
import javax.swing.JFrame;

public class BallWorld extends Frame {

public static void main(String[] args) {

    BallWorld bw1 = new BallWorld(Color.red);
    bw1.show();


}

public static final int framewidth = 600;
public static final int frameheight = 400;

private Ball aball;
private int counter = 0;

private BallWorld(Color ballColor){

    setSize(framewidth,frameheight);
    setTitle("Ball World");

    aball = new Ball(10, 15, 5);
    aball.setColor(ballColor);
    aball.setMotion(3.0, 6.0);

}


public void paint(Graphics g){

    aball.paint1(g);

    aball.move();


    if((aball.x() < 0) || (aball.x() > framewidth))

        aball.setMotion(-aball.xMotion(), aball.yMotion());

    if((aball.yMotion() < 0) || (aball.yMotion() > frameheight))

        aball.setMotion(aball.xMotion(),-aball.yMotion());

    //redraw  the frame

    counter = counter + 1;

    if(counter < 2000)
    repaint();
    else
        System.exit(0); 
}   
}

die andere Klasse ist

Ball.java

import java.awt.*;
import java.awt.Rectangle;
public class Ball {
protected Rectangle location;
protected double dx,dy;
protected Color color;
public Ball(int x,int y, int r){
location =new Rectangle(x-r, y-r, 2*r, 2*r);
dx=0;   //initially no motion
dy=0;
color = Color.blue;
}
//Setters
public void  setColor(Color newColor){
color = newColor;
}
public void setMotion(double new_dx, double new_dy){
dx = new_dx;
dy = new_dy;
}
//Getters
public int radius(){    
return location.width/2;
}
public int x(){
return location.x + radius();
}
public int y(){
return location.y + radius();
}
public double xMotion(){
return dx;
}
public double yMotion(){    
return dy;
}
public Rectangle region(){
return location;
}
//Methods that change attributes of the ball
public void moveTo(int x, int y){
location.setLocation(x, y);
}
public void move(){
location.translate((int) dx,(int) dy);
}
public void paint1(Graphics g){
g.setColor(color);
g.fillOval(location.x, location.y,location.width,location.height);
}
}
Schreibe einen Kommentar