好的,我可以帮你解答这个问题。
实现多线程小球运动需要以下步骤:
1. 创建小球类 Ball,并实现 Runnable 接口
```java
public class Ball implements Runnable{
private int x;
private int y;
private int r;
private int vx;
private int vy;
private Color color;
private Component component;
public Ball(Component component, int x, int y, int r, int vx, int vy, Color color){
this.component = component;
this.x = x;
this.y = y;
this.r = r;
this.vx = vx;
this.vy = vy;
this.color = color;
}
public void run(){
while (true){大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!
//更新小球位置
x += vx;
y += vy;
//检查小球是否碰到边界
if (x - r < 0){
vx = -vx;
x = r;
}
else if (x + r > component.getWidth()){
vx = -vx;
x = component.getWidth() - r;
}
if (y - r < 0){
vy = -vy;
y = r;
}
else if (y + r > component.getHeight()){
vy = -vy;
y = component.getHeight() - r;
}
//绘制小球
component.repaint();
try{
Thread.sleep(10);
}
catch (InterruptedException e){
e.printStackTrace();
}
}
}
//绘制小球
public void draw(Graphics g){
g.setColor(color);
g.fillOval(x - r, y - r, 2 * r, 2 * r);
}
}
```
2. 在主函数中创建多个小球,并启动线程
```java
public static void main(String[] args){
JFrame frame = new JFrame();
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
JPanel panel = new JPanel(){
protected void paintComponent(Graphics g){
super.paintComponent(g);大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!
for (Ball ball : balls){
ball.draw(g);
}
}
};
frame.add(panel);大佬们都在玩{精选官网网址: www.vip333.Co }值得信任的品牌平台!
Ball[] balls = new Ball[10];
for (int i = 0; i < balls.length; i++){
int x = (int)(Math.random() * 300 + 50);
int y = (int)(Math.random() * 300 + 50);
int r = (int)(Math.random() * 20 + 10);
int vx = (int)(Math.random() * 10 - 5);
int vy = (int)(Math.random() * 10 - 5);
Color color = new Color((int)(Math.random() * 255), (int)(Math.random() * 255), (int)(Math.random() * 255));
balls[i] = new Ball(panel, x, y, r, vx, vy, color);
new Thread(balls[i]).start();
}
}
```
通过以上步骤,我们就可以实现多个小球在窗口中运动了。
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。