Originariamente inviato da simo7784
Il metodo drawOval vuole come primi due parametri le coordinate del angolo in alto a sinistra del rettangolo contenente l'ovale e come successivi due parametri diametro orizzontale e verticale dell'ovale(in caso di cerhci i valori devono essere uguali).
Non salvare altezza e larghezza nel costruttore, ma utilizza due variabili locali nel metodo paintComponent, cosi' vengono calcolate ad ogni iterazione e il layout diventa liquido.
codice:
public class DisegnaCerchi extends JPanel {
    //Il padding e la distanza dal bordo del JPanel, la utilizzo quando disegno il cerchio.
    public static final int PADDING = 5;
    public DisegnaCerchi() {}

    public void paintComponent(Graphics abc) {
        super.paintComponent(abc);
        //calcolo le dimensioni come il minimo dei lati del pannello. 
        //Casto a int perche' i metodi restituiscono double.
        //nota non uso this.getHeight(), ma this.getSize().getHeight().
        int dimensioni = (int)(Math.min(this.getSize().getWidth, this.getSize().getHeight()));
        abc.drawOval(PADDING,PADDING,dimensioni-(PADDING*2),dimensioni-(PADDING*2));
    }
}
Così non funziona come volevo io..allora, il cerchio dovrebbe essere centrato nela pannello in questione, il nostro "this" praticamente..se i primi due parametri sono le coordinate dell'angolo in cima a sinistra del rettangolo (in questo caso quadrato) circoscritto al mio cerchio, e il cerchio deve avere raggio 45 (scusa, prima l'avevo omesso), io ho fatto una cosa del genere, che però non funziona:

codice:
public void paintComponent(Graphics abc) {

        super.paintComponent(abc);
        
        int centroL = ((int)((this.getSize().getWidth())/2))+45;
        int centroA = ((int)((this.getSize().getHeight())/2))-45;

        int dimensioni = (int)(Math.min(this.getSize().getWidth(), this.getSize().getHeight()));
        
        abc.drawOval(centroL,centroA,90,90);
    }
in teoria con this.getSize().getHeight())/2 ricavo la metà dell'altezza del pannello this, con getWidth/2 la metà della larghezza, quindi ho le coordinate del centro..dopodichè le coordinate dell'angolo in cima a sinistra dovranno essere rispettivamente centro-45 e centro+45..il ragionamento dovrebbe filare o no?