Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA] Fermare temporaneamente un ciclo

    Ciao a tutti.

    C'è un modo per fermare temporaneamente un ciclo? più precisamente un ciclo while..

    Perchè dovrei valorizzare delle variabili tramite il click del mouse (le variabili contengono le coordinate del mouse) e successivamente lanciare un metodo situato in un altra classe dentro quel ciclo..vorrei fermarlo fino a quando non ricevo il click del mouse per poi farlo ripartire con le variabili valorizzate...

    Per ora uso un ciclo che continua ad andare fino a quando non viene valorizzato un flag ed esce però usa la CPU al 100% e direi che non è una soluzione per niente bella...

    Grazie...

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

    Re: [JAVA] Fermare temporaneamente un ciclo

    Originariamente inviato da Paul16
    Perchè dovrei valorizzare delle variabili tramite il click del mouse (le variabili contengono le coordinate del mouse) e successivamente lanciare un metodo situato in un altra classe dentro quel ciclo..vorrei fermarlo fino a quando non ricevo il click del mouse per poi farlo ripartire con le variabili valorizzate...

    Per ora uso un ciclo che continua ad andare fino a quando non viene valorizzato un flag ed esce però usa la CPU al 100% e direi che non è una soluzione per niente bella...
    Sì, la soluzione è pessima. Ma dovresti spiegare meglio la situazione. Un click del mouse è un evento asincrono che puoi gestire usando un MouseListener.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    codice:
    		while (c) {
    			visualizzo il campo di gioco
    			leggo la mossa dell'utente
    			applico la mossa <- viene applicata la mossa anche quando non ci sono le coordinate..
    		}
    Praticamente la classe che crea la gui con il JFrame a cui ho attaccato il MouseListener viene lanciata in un ciclo while..il problema è che il ciclo per andare avanti ha bisogno di 2 variabili che sono valorizzate con le coordinate del mouse..ma il ciclo non si ferma ad aspettare le coordinate e va avanti valorizzando quelle variabili con 0...

    Possibili soluzioni?

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Unica soluzione: i thread.
    Non puoi avere un ciclo "infinito" come quello quando hai a che fare con interfaccie grafiche: l'aggiornamento a video e la predisposizione per l'accettazione di nuovi input (da tastiera, mouse, ecc) avviene solo quando il metodo termina (quindi mai).

    Sposta la gestione del ciclo in un thread separato. Se vuoi temporizzarlo usa il metodo sleep() del thread.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.