Quando crei il GradientPaint devi sfruttare le coordinate x1/y1/x2/y2 che puoi passargli, in modo che siano nello specifico rettangolo.
E visto che GradientPaint tratta float, probabilmente ti sarà più comodo usare Rectangle2D.Float.
E visto che il Rectangle e il GradientPaint sono "associati", sarebbe anche più preferibile "modellare" questo con una apposita classe es. GradientRectangle, che contiene i due oggetti e che risulta quindi più semplice da usare, già anche solo all'atto della istanziazione.
Altre cose utili:
- Nel frame fai un pack(). Il punto/problema è che il tuo MatrixPanel non ha un "preferred" size proporzionato al contenuto che poi disegna. Quindi o imponi la dimensione del frame o imponi un preferred size al pannello o fai in modo che il pannello fornisca il preferred size "giusto".
- Nel paintComponent non serve fare setBackground ogni volta. È già il "super" paintComponent che si fa carico di gestire il background. Quindi ti basta impostarlo 1 volta sola es. nel costruttore.


Rispondi quotando