Java 使用 paintcomponent 创建多个球
Java creating multiple Balls using paintcomponent
我想创建一个在面板上创建 5 个球的方法。有人可以使用 paint 组件方法或创建我自己的 draw 方法帮助我解决这个问题。正如您在下面看到的,我有一个带有 for 循环的绘制组件方法,它将循环 5 并在随机位置创建一个球,但不幸的是只创建了一个球。
import java.awt.*;
import java.util.Random;
import javax.swing.*;
public class AllBalls extends JPanel {
int Number_Ball=5;
int x,y;
Graphics g;
AllBalls(){
Random r = new Random();
x=r.nextInt(320);
y=r.nextInt(550);
}
public static JFrame frame;
public static void main(String[] args) {
AllBalls a= new AllBalls();
frame= new JFrame("Bouncing Balls");
frame.setSize(400,600);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.add(a);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for(int i=0;i<Number_Ball;i++){
g.fillOval(x, y, 30, 30);
}
repaint();
}
}
Random r = new Random();
x=r.nextInt(320);
y=r.nextInt(550);
您只能创建一个随机点,而不是 5 个。
如果你想要 5 个随机点,那么你需要创建一个 ArrayList 来存储你的 5 个随机点。类似于:
ArrayList<Point> balls = new ArrayList<Point>(5); // instance variable
AllBalls()
{
Random r = new Random();
for (int i = 0; i < 5; i++)
balls.add( new Point(r.nextInt(320), r.nextInt(550));
}
然后在paintComponent()方法中你需要遍历所有的点:
for (Point p: balls)
g.fillOval(p.x, p.y, 30, 30);
此外,删除 repaint() 语句。永远不要在绘画方法中调用repaint(),这会导致无限循环。
我想创建一个在面板上创建 5 个球的方法。有人可以使用 paint 组件方法或创建我自己的 draw 方法帮助我解决这个问题。正如您在下面看到的,我有一个带有 for 循环的绘制组件方法,它将循环 5 并在随机位置创建一个球,但不幸的是只创建了一个球。
import java.awt.*;
import java.util.Random;
import javax.swing.*;
public class AllBalls extends JPanel {
int Number_Ball=5;
int x,y;
Graphics g;
AllBalls(){
Random r = new Random();
x=r.nextInt(320);
y=r.nextInt(550);
}
public static JFrame frame;
public static void main(String[] args) {
AllBalls a= new AllBalls();
frame= new JFrame("Bouncing Balls");
frame.setSize(400,600);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.add(a);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for(int i=0;i<Number_Ball;i++){
g.fillOval(x, y, 30, 30);
}
repaint();
}
}
Random r = new Random();
x=r.nextInt(320);
y=r.nextInt(550);
您只能创建一个随机点,而不是 5 个。
如果你想要 5 个随机点,那么你需要创建一个 ArrayList 来存储你的 5 个随机点。类似于:
ArrayList<Point> balls = new ArrayList<Point>(5); // instance variable
AllBalls()
{
Random r = new Random();
for (int i = 0; i < 5; i++)
balls.add( new Point(r.nextInt(320), r.nextInt(550));
}
然后在paintComponent()方法中你需要遍历所有的点:
for (Point p: balls)
g.fillOval(p.x, p.y, 30, 30);
此外,删除 repaint() 语句。永远不要在绘画方法中调用repaint(),这会导致无限循环。