Originariamente inviato da gatsu85
ovviamente per disegnare devo necessariamente utilizzare il metodo paint, che viene richiamato ogni qualvolta faccio una repaint
Lo dico sempre (l'ho detto anche in questi ultimi giorni sul forum in una discussione): nei componenti Swing il "contesto" di disegno è il metodo

protected void paintComponent(Graphics)

non paint. paint c'è, esiste ancora, è il punto di "ingresso" principale e pubblico di disegno e tecnicamente si può anche farne un override. Ma è più a monte, in quanto in Swing il disegno dei componenti è "fattorizzato" in 3 fasi di cui una è appunto paintComponent.
Quindi è bene fare l'override di paint solo se si sa che cosa si sta facendo (e per buoni motivi).

Originariamente inviato da gatsu85
Io vorrei arrivare ad una situazione in cui ho pannelli che scorrono (e questo sono riuscito a farlo con un timer nel frame principale che ogni tot millisecondi sposta e ridisegna i pannelli in esso contenuti) , vorrei avere poi questa barra tacchettata fissa ad un lato sulla quale scorreranno dei quadratini legati ai pannelli che scorrono con un altra linea. Il rapporto pannelli quadratini pannelli che scorrono è 1 a 1, per ogni pannello ho un quadratino e una linea che li collega. Come mi approccio a questa cosa? per ora sono arrivato già con non poche difficoltà a far scorrere pannelli.

Ah il tutto lo inserisco nel contentPane del frame principale.

Avrei pensato anche a fare un pannello apposito per la barra e i quadratini che scorrono, ma poi come faccio a disegnare una linea che unisce oggetti grafici che si trovano in pannelli diversi dello stesso frame?
Per quanto riguarda il disegno di questo "righello" da un lato, gli approcci possono essere svariati, 3 che me ne vengono in mente:

1) Si sfruttano i layout manager, in pratica si fa in modo che in una area ci sia un pannellino che disegna solo questo righello e a fianco un altro pannello che contiene il resto.
Una idea banale potrebbe essere BorderLayout: in WEST il righello e in CENTER il pannello che contiene il resto. Ma non è l'unica possibilità ovviamente.

2) Si realizza un Border (implementazione di javax.swing.border.Border e in genere si parte dalla estensione di javax.swing.border.AbstractBorder per comodità).
Tutti i componenti Swing possono visualizzare 1 Border. Un bordo può disegnare quello che vuole su uno o più lati del componente e al tempo stesso fornisce al componente gli "insets" affinché si possa scartare questo spazio. I layout manager ad esempio lo scartano, cioè dispongono i componenti in modo che non vadano certo sopra il bordo.

Quindi il tuo "RighelloBorder" lo assegni nello stesso pannello dove andrai a mettere il resto dei componenti. Se come hai detto all'inizio non c'è layout manager devi preoccuparti tu di non andare a piazzare componenti sopra il bordo! (mi pare il minimo, no?)

3) Fai un pannello specifico che disegna nel suo paintComponent il righello e questo pannello fa anche, allo stesso tempo, da "contenitore" per il resto dei componenti. Anche qui più o meno come 2) devi assicurarti che non si vada sopra il disegno del righello.


Per quello che hai detto "disegnare una linea che unisce oggetti grafici che si trovano in pannelli diversi dello stesso frame", questo è più complicato ma è comunque fattibile e ci sarebbero da fare un po' di valutazioni.