mam do napisania program z watkami, ktory symuluje ruch po okrągu. moj program polega na tym, że zamiast "rysowac" ruch kulki po okregu, program rysuje okrag :/ ktoś mógłby pomóc?
klasa Koral
import java.awt.geom.*;
public class Koral
{
private double x=50;
private double y=50;
private static final int SIZE=5;
double r_r=100;
double sr_x=225;
double sr_y=125;
double h;
double a;
public void ruchPoOkgregu(double kat)
{
h=r_r*Math.sin(kat);
y=sr_y+h;
a=r_r*Math.cos(kat);
x=sr_x+a;
}
public Ellipse2D getKsztalt()
{
return new Ellipse2D.Double(x, y, SIZE, SIZE);
}
}
klasa KoralComponent
import javax.swing.*;
import java.util.*;
import java.awt.*;
public class KoralComponent extends JPanel
{
private ArrayList <Koral> koraliki = new ArrayList<Koral>();
public void add(Koral k)
{
koraliki.add(k);
}
public void paintComponent(Graphics g)
{
super.paintComponents(g);
Graphics2D g2= (Graphics2D) g;
for(Koral k : koraliki)
{
g2.fill(k.getKsztalt());
}
}
}
klasa KoralWatek
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class KoralWatki
{
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
JFrame frame = new KoralFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
class KoralRunnable implements Runnable
{
private Koral koral;
private Component component;
public static final int POWTORZ=1000;
public static final int OPOZNIENIE=3;
public KoralRunnable(Koral kkor, Component kcomp)
{
koral=kkor;
component=kcomp;
}
public void run()
{
double i=0;
try
{
for ( i=0; ;i=i+0.001)
{
koral.ruchPoOkgregu(i);
component.repaint();
component.repaint();
Thread.sleep(OPOZNIENIE);
}
}
catch (InterruptedException e){}
}
}
class KoralFrame extends JFrame implements ActionListener
{
private KoralComponent comp;
public static final int OPOZNIENIE=5;
JButton dodaj = new JButton("Start");
JButton zamknij = new JButton("Zamknij");
public KoralFrame()
{
setSize(450,350);
setTitle("Watki-Korale");
comp=new KoralComponent();
add(comp, BorderLayout.CENTER);
JPanel buttonPanel = new JPanel();
buttonPanel.add(dodaj);
buttonPanel.add(zamknij);
buttonPanel.setFocusable(true);
add(buttonPanel, BorderLayout.SOUTH);
dodaj.addActionListener(this);
zamknij.addActionListener(this);
}
public void addKoral()
{
Koral k = new Koral();
comp.add(k);
Runnable r = new KoralRunnable(k, comp);
Thread t = new Thread(r);
t.start();
}
public void actionPerformed(ActionEvent evt)
{
Object zrodlo = evt.getSource();
if (zrodlo==dodaj) addKoral();
if (zrodlo==zamknij) System.exit(0);
}
}