Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Lomio
    Registrato dal
    Jul 2010
    Messaggi
    160

    [java] Aggiornare JPanel dopo un MouseClicked

    Ciao ragazzi, ho bisogno di aiuto!
    Ho un JPanel suddiviso in celle che mi rappresenta una scacchiera e vorrei che al verificarsi di 2 click, il primo su di una cella e il secondo su di un'altra il mio JPanel venga aggiornato in modo da mostrare il movimento del pezzo sulla scacchiera!!!
    Come fare??! Ho provato a chamare repaint() ma non da nessun esito!
    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [java] Aggiornare JPanel dopo un MouseClicked

    Originariamente inviato da Lomio
    Ho un JPanel suddiviso in celle che mi rappresenta una scacchiera e vorrei che al verificarsi di 2 click, il primo su di una cella e il secondo su di un'altra il mio JPanel venga aggiornato in modo da mostrare il movimento del pezzo sulla scacchiera!!!
    Alt! Innanzitutto precisa cosa intendi per "celle"? Sono ad esempio componenti distinti messi in un GridLayout? O sono celle "grafiche" che disegni tu in un unico componente?
    E poi cosa intendi per "mostrare il movimento"? Che si veda una "animazione" per un breve periodo di tempo?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Lomio
    Registrato dal
    Jul 2010
    Messaggi
    160
    Si scusa forse ho fatto un po' di confusione e non sono stato chiaro!!!
    In poche parole è un JPanel suddiviso in GridLayout 8*8!!!
    Ogni GridLayout ha un MouseListener, che funziona correttamente e intercetta in modo corretto le coordinate della cella producendo anche i movimenti corretti dei pezzi nella mia class Scacchiera, adesso però vorrei che oltre a essere "spostati" in modo invisibile siano spostati in modo visibile nella mia class ScacchieraGrafica!
    La class ScacchieraGrafica controlla la disposizione dei pezzi sulla class Scacchiera e in base a come sono posizionati mi aggiunge o meno l'immagine .png del pezzo.
    Ho impostato un flag che mi segnala quando avvengono cambiamenti all'interno della class Scacchiera, ovvero quando il pezzo è stato mosso, adesso il mio problema sta nel far si che l'immagine del pezzo sparisca da una Grid e appaia in un'altra.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Lomio
    In poche parole è un JPanel suddiviso in GridLayout 8*8!!!
    Fin qui ok ... ma ogni cella del GridLayout quale componente contiene? Un JLabel?

    Originariamente inviato da Lomio
    siano spostati in modo visibile nella mia class ScacchieraGrafica!

    l'immagine del pezzo sparisca da una Grid e appaia in un'altra.
    Se si tratta solo di questo (e niente "animazioni" particolari), ti basta cambiare le immagini dove/come opportuno. Ripeto che non hai precisato cosa contengono le celle. Se ci sono dei JLabel che visualizzano dei ImageIcon, ti basta usate setIcon() per settare una immagine "vuota" in una label e settare nell'altra label la immagine del pezzo spostato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it L'avatar di Lomio
    Registrato dal
    Jul 2010
    Messaggi
    160
    si esatto ogni grid contiene un jlabel il quale a sua volta contiene l'immagine del pezzo!
    comunque penso di aver capito come risolverlo, mi hai illuminato ti ringrazio e se risolvo il problema posto la "soluzione".

  6. #6
    Utente di HTML.it L'avatar di Lomio
    Registrato dal
    Jul 2010
    Messaggi
    160
    Risolto!!!

    Recupero il Jlabel nella classe di gestione del MouseClicked con e.getComponent() ---> salvo il pezzo in una variabile d'appoggio e al secondo click con removeAll() rimuovo il jlabel e metto nella destinazione d'arrivo il contenuto della mia variabile d'appoggio!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.