Potresti cominciare con l'evitare come la peste quella parte di composizione grafica che si ostinano a mettere in tutti gli IDE, tirare fuori un foglio di carta, fare il disegno della tua interfaccia grafica e vedere di implementarla per bene tramite il/i giusto/i layour manager e scegliendo accuratamente i componenti.

Per quanto riguarda il disegno del cerchio (e di tutte le primitive grafiche), dovresti consultare le API su Graphics (e/o Graphics2D): molte utili primitive (tipo linee, rettangoli, archi etc etc) sono già tutte implementate

http://java.sun.com/javase/6/docs/ap.../Graphics.html

qundi ti basta raccattare l'oggetto graphics della tua canvas:

codice:
Graphics g = tuaCanvas.getGraphics();
e quindi chiamare drawArch...


codice:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
 *
 * @author Andrea
 */
public class CanvasDemo extends JFrame {
    
    private final Canvas c;
    
    
    /** Creates a new instance of CanvasDemo */
    public CanvasDemo() {
        super("Canvas Demo");
        this.setSize(400,400);
        this.getContentPane().setLayout(new BorderLayout());
        JButton drawArc = new JButton("Disegna Cerchio");
        this.getContentPane().add(drawArc, BorderLayout.SOUTH);
        
        c = new Canvas();
        this.getContentPane().add(c, BorderLayout.CENTER);
        
        drawArc.addActionListener(new AbstractAction() {
            public void actionPerformed (ActionEvent ae) {
                Graphics g = c.getGraphics();
                int radius = ((int)(200*Math.random()));
                g.drawArc(((int)(400*Math.random())), ((int)(400*Math.random())), radius, radius, 0, 360);                
            }
        });
        
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    public static void main (String[] args) {
        new CanvasDemo();
    }
    
}