import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
import java.util.*;
public class Bounce {
public static void main(String[] args){
EventQueue.invokeLater(new Runnable(){
public void run(){
JFrame frame=new BounceFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class BounceFrame extends JFrame{
private BallComponent comp;
public static final int STEPS=1000;
public static final int DELAY=3;
public BounceFrame(){
setTitle("Bounse");
comp=new BallComponent();
add(comp,BorderLayout.CENTER);
JPanel buttonPanel=new JPanel();
addButton(buttonPanel,"start",new ActionListener(){
public void actionPerformed(ActionEvent event){
addBall();
}
});
addButton(buttonPanel,"close",new ActionListener(){
public void actionPerformed(ActionEvent event){
System.exit(0);
}
});
add(buttonPanel,BorderLayout.SOUTH);
pack();
}
public void addButton(Container c, String title, ActionListener listener){
JButton button=new JButton(title);
c.add(button);
button.addActionListener(listener);
}
public void addBall(){
try{
Ball ball=new Ball();
comp.add(ball);
for(int i=1;i<=STEPS;i++){
ball.move(comp.getBounce());
comp.paint(comp.getGraphics());
Thread.sleep(DELAY);
}
}
catch(InterruptedException e){
}
}
}
public class Ball{
private static final int XSIZE=15;
private static final int YSIZE=15;
private double x=0;
private double y=0;
private dx=+1;
private dy=+1;
public void move(Rectangle2D bounds){
x+=dx;
y+=dy;
if(x<bounds.getMinX()){
x=bounds.getMinX();
dx=-dx;
}
if(x+XSIZE>=bounds.getMaxX()){
x=bounds.getMaxX()-XSIZE;
dx=-dx;
}
if(y<bounds.getMinY()){
y=bounds.getMinY();
dy=-dy;
}
if(y+YSIZE>=bounds.getMaxY()){
y=bounds.getMaxY()-YSIZE;
dy=-dy;
}
}
public Ellipse2D getShape(){
return new Ellipse2D.Double(x, y, XSIZE, YSIZE);
}
}
public class BallComponent extends JPanel{
private static final int DEFAULT_WIDTH=450;
private static final int DEFAULT_HEIGHT=350;
private java.util.List<Ball> balls=new ArrayList<>();
public void add(Ball b){
balls.add(b);
}
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2=(Graphics2D) g;
for(Ball b:balls){
g2.fill(b.getShape());
}
}
public Dimension getPreferredSize(){
return new Dimension(DEFAULT_WIDTH,DEFAULT_HEIGHT);
}
}
编译显示:
求解这个问题怎么解决。我是新手,忘大神指点一二。
------解决思路----------------------
private dx=+1;
private dy=+1
这两句代码应该写成这样:
private dx+=1;
private dy+=1
编译的时候编译主方法所在类的类名Bounce。