问题:The method add(String, Component) in the type Container......
程序1:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
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
{
public BounceFrame()
{
setSize(DEFAULT_WIDTH,DEFAULT_HEIGH);
setTitle("Bounce");
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);
}
});
}
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.getBounds());
comp.paint(comp.getGraphics()); Thread.sleep(DELAY);
}
}catch(InterruptedException e)
{}
}
private BallComponent comp;
public static final int DEFAULT_WIDTH=450;
public static final int DEFAULT_HEIGH=350;
public static final int STEPS=1000;
public static final int DELAY=3;
}
程序2:
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;
public class Ball {
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);
}
private static final int XSIZE=15;
private static final int YSIZE=15;
private double x=0;
private double y=0;
private double dx=1;
private double dy=1;
}
程序3:
import java.awt.*;
import java.util.*;
import javax.swing.*;
public class BallComponent {
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());
}
}
private ArrayList<Ball> balls=new ArrayList<Ball>();
}
在程序1中红色部分是有错误的,报错信息如下:
The method add(String, Component) in the type Container is not applicable for the arguments (BallComponent, String)
The method getBounds() is undefined for the type BallComponent
The method getGraphics() is undefined for the type BallComponent
请问为什么会报着几个错误,该如何进行修改?
在程序3中红色部分也是有错误的,不知道出错原因是什么?
请高人帮忙解答一下,非常感谢。
因为下面写不了了,只有在这儿写了,经过下面的修改后,再在程序1中加一行代码add(comp,BorderLayout.CENTER);就OK 了