Witam
Próbuję napisać program przypominający radar - czyli wewnątrz określonego okręgu wokół punktu obraca się linia o zmieniających się współrzędnych jednego punktu (leżacego na krawędzi okręgu). Potrafię wyliczyć linię i je wyrysować, ale niestety tylko wszystkie naraz - a chodzi mi o uzyskanie animacji. Niestety - ciągle brak sukcesu. Albo wypisuje mi jedną linię w końcowym punkcie albo wszystkie na raz. Mógłby mi ktoś pomóc rozwiązać ten problem?
Kod: http://4programmers.net/Pastebin/2254
0
1
Masz zupełnie błędną organizację rysowania i niepotrzebną klasę CPanel.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class CFrame extends JFrame
{
double x = 200.0;
double y = 0.0;
int j = 0;
CFrame()
{
setTitle("Radar");
ActionListener task = new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
x = (200+200*Math.sin((j/180.0)*Math.PI));
y = (200+200*Math.cos((j/180.0)*Math.PI));
j++;
repaint();
}
};
Timer timer = new Timer(50,task);
add(new CDrawPanel());
pack();
setLocationRelativeTo(null);
timer.start();
}
class CDrawPanel extends JPanel
{
CDrawPanel()
{
setBackground(Color.WHITE);
setPreferredSize(new Dimension(500,500));
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawOval(50, 50, 400, 400);
g.drawLine(250,250,(int)x,(int)y);
}
}
}
public class Radar {
public static void main(String[] args) {
CFrame myFrame = new CFrame();
myFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
myFrame.setVisible( true );
}
}
0
Trochę musiałem poprawić wartości, bo źle rysowało, ale już wszystko działa. Dzięki wielkie!