Elementi mobili a runtime con swing

di il
3 risposte

Elementi mobili a runtime con swing

Ciao a tutti, sono un nuovo utente appena iscritto, mi sono iscritto perché dopo varie ricerche in rete ho trovato questo forum dove penso di poter trovare una risposta alla mia domanda, che è la seguente:

È possibile in swing fare in modo che un elemento, nella fattispecie un'immagine, venga riposizionata dall'utente dove vuole all'interno del JPanel?
Mi spiego meglio, voglio realizzare la versione digitale di un gioco da tavolo e vorrei in questo modo risolvere il problema del movimento delle pedine sul tabellone di gioco. Ci sarà quindi un'immagine di sfondo nel JPanel che sarà il tabellone e poi ci dovranno essere da 2 a 4 pedine che l'utente potrà muovere semplicemente trascinandole con il mouse per segnare l'andamento delle squadre. È possibile realizzarlo con swing?

3 Risposte

  • Re: Elementi mobili a runtime con swing

    J@k@ ha scritto:


    È possibile in swing fare in modo che un elemento, nella fattispecie un'immagine, venga riposizionata dall'utente dove vuole all'interno del JPanel?
    Certo, è possibilissimo! C'è solo da ricordare che le immagini di per sé NON sono dei "componenti" (in senso AWT/Swing) ma sono solo degli elementi disegnati su un componente.

    Se hai una "board" di gioco da disegnare e poi dei "pezzi" da disegnare e spostare sopra, ci sono in realtà diversi approcci, ne dico giusto due:

    a) Usi un JPanel in cui fai del custom painting per disegnare su una unica superficie sia la board, sia i pezzi.

    b) Usi un JPanel in cui fai del custom painting SOLO per disegnare la board e poi i pezzi li gestisci come componenti (es. JLabel o altro) contenuti nel JPanel ovvero usando JPanel anche come "contenitore" di componenti.

    La soluzione a) è più complessa per il painting e per la gestione degli spostamenti perché c'è da fare tutto "a mano". La soluzione b) è più semplice e hai meno lavoro in generale ma ci sono comunque alcune considerazioni da fare.

    In ogni caso devi implementare un MouseListener (per l'evento mousePressed) e anche un MouseMotionListener (per l'evento mouseDragged)

    Valuta cosa ti è più comodo/utile. Se hai dubbi, chiedi. Se vuoi una spiegazione maggiore, idem chiedi.
  • Re: Elementi mobili a runtime con swing

    Sei stato chiarissimo grazie mille delle spiegazione ho provato come hai detto ed ho fa quello che volevo
  • Re: Elementi mobili a runtime con swing

    J@k@ ha scritto:


    Sei stato chiarissimo grazie mille delle spiegazione ho provato come hai detto ed ho fa quello che volevo
    Bene. Una cosa che non ho chiarito (ma spero l'hai capito/fatto) è che lo spostamento della immagine o componente (a seconda della tecnica) va fatto "relativamente" in base ai "delta" tra due azioni del mouse.
    Nel mousePressed prendi x/y del mouse e li salvi. Al primo mouseDragged riprendi x/y correnti del mouse e fai il delta e sposti il pezzo di questo delta, quindi salvi x/y. Al successivo mouseDragged idem, ecc...
Devi accedere o registrarti per scrivere nel forum
3 risposte