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:
e quindi chiamare drawArch...codice:Graphics g = tuaCanvas.getGraphics();
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(); } }

Rispondi quotando