Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    68

    Problema movimento Label java

    Salve a tutti,
    avrei un problema con java, in pratica ho fatto un programma in cui quando clicchi sul JPanel fa muovere la Label nel punto che hai cliccato :
    codice:
    private void MovPers(java.awt.event.MouseEvent evt) {
        try{
    
         int y_p = evt.getY();
         int x_p = evt.getX();
         String coordinate_p = x_p+"."+y_p;
         String coordinate_pers = Personaggio.getX()+","+Personaggio.getY();
         Thread.sleep(2000);
         Personaggio.setLocation(x_p,y_p);
    
        }catch(Exception imp){}
        
    }
    Vorrei che si muovesse lentamente verso il punto e ho creato anche un codice che però non funziona:
    codice:
     
        private void MovPers(java.awt.event.MouseEvent evt) {
        try{
         int y_p = evt.getY();
         int x_p = evt.getX();
         String coordinate_p = x_p+"."+y_p;
         String coordinate_pers = "0,0";
    
    while(!(coordinate_p.equals(coordinate_pers))){
    
        int Y_p = Personaggio.getY();
        int X_p = Personaggio.getX();
        if(Y_p < y_p){
            
            Thread.sleep(150);
            Personaggio.setLocation(X_p,(Y_p+1));
    
        }
        if(Y_p > y_p){
    
            Thread.sleep(150);
            Personaggio.setLocation(X_p,(Y_p-1));
    
        }
            if(X_p < x_p){
    
            Thread.sleep(150);
            Personaggio.setLocation((X_p)+1,Y_p);
    
        }
        if(X_p > x_p){
    
            Thread.sleep(150);
            Personaggio.setLocation((X_p-1),Y_p);
    
        }
    
        coordinate_pers = X_p + "," + Y_p;
    
        }
    
        }catch(Exception imp){}
        }
    E per questo mi rivolgo a voi, mi sapete dare qualche consiglio?
    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    68
    Allora nessuno può aiutarmi?

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    68
    Deve essere difficile!

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    L'approccio è parecchio sbagliato. Innanzitutto quel metodo che hai postato immagino che venga invocato a seguito di un evento del mouse (hai sicuramente registrato un MouseListener da qualche parte). Ma questo implica una cosa: quel tuo metodo viene invocato nel contesto del EDT, event dispatch thread. Il thread che si occupa di tutta la gestione della interfaccia utente, compreso il disegno dei componenti e il dispacciamento degli eventi.
    Questo thread NON lo devi mai tenere impegnato per troppo tempo ... non devi fare sleep() o roba che lo appesantisca. Altrimenti la tua interfaccia utente è praticamente "congelata" in quel frangente di tempo.

    L'unica cosa che si deduce è che non hai ben chiaro come funzionano le cose in Swing. Per questo motivo ti suggerisco di documentarti (c'è il tutorial della Sun) e magari di guardare tra i miei Java Examples (vedi firma), dove trovi esempi semplici che mostrano ad esempio come disegnare oggetti, spostarli e altro.
    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
    Registrato dal
    Jun 2009
    Messaggi
    68
    Non ho chiesto la storia della tua vita, solo come risolvere, nn rimamandateme a quelle guide in inglese che non si capisce nnt ,solo come posso risolverlo

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.