
Originariamente inviata da
LeleFT
Per poter far sì che gli oggetti vengano disegnati devi ridefinire uno tra i due metodi: paint o paintComponent. Meglio il secondo.
Ad ogni modo, i due metodi hanno la seguente firma:
paint(Graphics g)
paintComponent(Graphics g)
Non puoi "inventarti" una nuova firma... se lo fai, stai definendo un nuovo metodo "custom" di cui nessuno sa nulla e che nessuno invocherà (se non lo fai tu, che ne ha conoscenza).
Nel thread fai 2 chiamate: movimento() e repaint(). Il primo sposta gli oggetti. Il secondo richiama il "refresh" della videata. Il framework Swing effettua questo "refresh", richiamando il metodo paintComponent() (che a sua volta richiama il metodo paint() ). Ma, ovviamente, richiama quello giusto (cioè quello con la firma imposta dalla sua API).
Nel tuo codice hai definito un metodo paint() che riceve un array di oggetti Graphics2D (che non ha alcun senso: il graphics è uno soltanto, quello del pannello in cui andranno disegnati gli oggetti)... e questo metodo non viene invocato da nessuno.
Quindi, quello che va fatto, è
ridefinire correttamente il metodo paint() o paintComponent(), che hanno la firma che ho esposto sopra.
Ciao.
