Visualizzazione dei risultati da 1 a 2 su 2

Hybrid View

  1. #1
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Mistyflea Visualizza il messaggio
    Il mio problema riguarda la velocità con cui il mio JPanel si muove alla pressione di un tasto da me definito. Si muove troppo lentamente nonostante abbia impostato la pausa dell'esecuzione a un millisecondo[Thread.sleep(1)].
    Mi spiace, ma di "sensato" c'è poco, anzi quasi nulla.

    1) hai fatto partire la creazione della GUI nel "main" thread invece che nel Event Dispatch Thread. Questa in generale non è una cosa gravissima e generalmente non causa problemi ... a patto che l'ULTIMA cosa fatta sia il setVisible(true). Invece fai altro dopo. Quindi sarebbe meglio che apprendi meglio i concetti sul EDT.

    2) il while(true){ repaint(); } non ha assolutamente senso. Vuol dire che non hai (ancora) compreso come funziona il painting in Swing.

    3) il x++ è fatto a seguito di un evento causato dalla tastiera. La velocità con cui avviene non dipende dal programma Java ma DIPENDE da come è configurato il sistema riguardo la velocità di ripetizione dei tasti! (Sui Windows: pannello di controllo -> Tastiera)

    4) il Thread.sleep(1) nel keyPressed non ha senso ed è del tutto inutile. Se anche la velocità di ripetizione dei tasti fosse es. di 30 ripetizioni/secondo (= circa 33 millisecondi di intervallo), il fatto di "tardare" la terminazione del keyPressed di 1 millisecondo non cambia NULLA. E anzi, a seconda del sistema, non è affatto detto che la "granularità" dello sleep sia davvero del millisecondo!

    aggiungiamo un

    5) la prima istruzione del paintComponent da fare generalmente è un super.paintComponent(g); a meno che "sai" esattamente cosa stai facendo e perché.
    Ultima modifica di andbin; 15-08-2017 a 18:28
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.