gabri_briscola ha scritto:
Nel realizzare un gioco di carte sono bloccato nello spostare le carte al centro di un pannello attraverso l'azione del Muose, le carte sono JPanel e sono inserite in un pannello più grande che è il tavolo a cui ho applicato il GridBagLayout, vorrei trovare il modo di cliccare e trascinarle nel momento della giocata al centro del tavolo ( le carte sono posizionate in alto e in basso per due giocatori), qualche consiglio ? Sono bloccato di nuovo, dovrei usare un Mouse Listener e in qualche modo sfruttare le coordinate ma non so proprio come mettere giu il codice
Se il pannello del "tavolo" ha un GridBagLayout, NON riuscirai a spostare i componenti delle carte contenuti dentro!
Quello che dicevo nell'altra discussione sostanzialmente lo ripeto qui: PUOI usare dei layout manager se la finestra la devi decomporre in più parti, per avere .. che so, una barra di stato, un pannello con dei punteggi, ecc.
Ma per il pannello che contiene i componenti-carte semplicemente TOGLI il layout manager ed usa il posizionamento "assoluto". Questo ti permette di spostare facilmente le carte nel "tavolo".
Poi per lo spostamento delle carte bisogna registrare 2 listener su ciascun pannello-carta: MouseListener (per il mousePressed) e MouseMotionListener (per il mouseDragged).
Il movimento di una carta va fatto per spostamenti "relativi" tra un evento e l'altro del mouse.
Al mousePressed prendi la posizione x1,y1 che è relativa al componente della carta. E NON ha importanza dove hai premuto esattamente sulla carta, se al centro, più in altro, più in basso, in un angolo, ecc.
Poi al prossimo mouseDragged prendi la posizione x2,y2 e sposterai la carta (la sua location) di dx=x2-x1 ; dy=y2-y1 .
Al prossimo mouseDragged prendi x3,y3 e sposterai la carta di dx=x3-x2 ; dy=y3-y2 .
E così via ...
Lascio ragionare te sul perché sia meglio fare così.