これはしばらくの間この問題に悩まされており、私は助けが切望されています。私を助けてください。私は3つのクラスを持っています:Java GUIでインスタンスとして作成された円を描く
円は、ランダム開始位置(と半径を定義する)で作成されたフレームに円を描くと仮定します。
フレームは、addCircle()、bounce()、start()、stop()、run()(円の移動)、quit()などのメソッドを持つメインクラスです。このクラスは、サークルが追加されるフレームも作成します。
インターファーは、ちょうど今のところ、私が半径、円の数、およびフレームのサイズを定義するインテーフェースフレームです。
どんなに私は(1が着色され、1つはありません)つ以上の円を追加することはできませんしようとするもの:
「再帰的な方法」:
private static void addCircle(int n){
Circle[] circles = new Circle[n+10];
if (n > 0){
circles[circleAdd] = new Circle();
frame.add(circles[circleAdd]);
circleAdd = circleAdd + 1;
addCircle(n-1);
}
}
ノーマルitterative方法を
private static void addCircles(int n){
ArrayList<Circle> circles = new ArrayList<Circle>();
for(int i = 0; i<=n;i++){
circles.add(new Circle());
frame.add(circles.get(i));
}
}
これは私が私のフレームを作成する方法である:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public Class Frame{
private static JFrame frame;
private static int circleAdd = 0;
private static JPanel fra;
public static void mainFrame(){
frame = new JFrame();
frame.setSize(500,500);
frame.setVisible(true);
fra = new JPanel();
frame.add(fra);
...
//addCircle and addCircles
...
public static void main..
}
}
これは私のサークルです:私はあなたの一般的なアプローチが間違っていることを示唆している
import java.awt.*;
import javax.swing.*;
import java.util.Random;
public class Circle extends JPanel{
private Random random = new Random();
public void paint(Graphics g){
int randX = random.nextInt(250)+50;
int randY = random.nextInt(250)+50;
g.drawOval(randX,randY,50,50);
g.setColor(Color.ORANGE);
g.fillOval(100,100,50,50);
}
}
間違ったGUIフレームワークを使用していると思います。 Swingの後継者である[JavaFX](https://docs.oracle.com/javase/8/javafx/get-started-tutorial/index.html)に切り替える必要があります。そこには '' Circle'(https://docs.oracle.com/javase/8/javafx/api/javafx/scene/shape/Circle.html)のクラスがあり、それをアニメーション化するのに役立つ多くのクラスがあります。 –