Problem z rysowaniem swing i awt

0

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

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!

1 użytkowników online, w tym zalogowanych: 0, gości: 1