Adesso ottieni un ovale (in generale) perché larghezza/altezza sono sostanzialmente controllati solo ed esclusivamente dall'utente.
Se vuoi sempre un cerchio puoi usare la lunghezza su un asse anche per l'altro asse oppure fare una logica più complessa del tipo "quale è il cerchio che sta perfettamente inscritto/centrato in un rettangolo" ma richiede qualche calcolo in più.
Più che altro cambia poi quello che l'utente deve aspettarsi.
Sì ovviamente è possibile. Nota che attualmente w e h (quelli che usi nel drawOval) li assegni solo nel mouseReleased. Basta che il size attuale, quello che l'utente sta cambiando, si rifletta subito, e non solo più al mouseReleased, nel painting.
Banalmente:
g.drawOval(xx, yy, currentRect.width, currentRect.height);
Una nota finale: facendo come ho appena detto, usi currentRect nel paintComponent. Ma la variabile currentRect è inizialmente a null e al primo paintComponent ci sarà un NullPointerException. Quindi o inizializzi currentRect o salti il drawOval se è null.


Rispondi quotando