Sto lavorando a un progetto Tetris e sto scoprendo che devo usare entrambi javax.swing.Timer e java.util.Timer. Ma uno di loro non funziona. Qualcuno può fornire una panoramica di questo problema?
risposte:
1 per risposta № 1Sì, puoi utilizzare le 2 classi insieme, ma devi inserire il pacchetto completo come questo
java.util.Timer myUtilTimer= ..
javax.swing.Timer myUtilTimer= ..
Inoltre devi fare attenzione a quella uscita da java.util.Timer
deve essere avvolto in SwingUtilities.invokeLater(myRunnable);
da aggiungere al EDT altrimenti non è garantito che qualcosa dovrebbe essere visualizzato / modificato / ridipinto
2 per risposta № 2
Sì, puoi utilizzare 2 classi con lo stesso nome, ma anziché importarle, dovresti utilizzare il qualificatore completo:
vale a dire:
javax.swing.Timer timer = new ...
1 per risposta № 3
Sì, puoi, ma se stai usando entrambi nello stesso file java, dovrai accedere a una classe con il nome completo del pacchetto come java.util.Timer
perché otterrà un conflitto se si importano entrambe le classi.
1 per risposta № 4
In questo concreto esempio, "A javax.swing.Timer
incrementa un int
a 100 Hz, mentre a java.util.TimerTask
campiona il valore a 1 Hz. "A LinkedBlockingQueue<Integer>
sincronizza l'accesso ai dati condivisi e registra l'ultimo N
campioni. L'esempio illustra le caratteristiche di tutte e tre le risposte precedenti:
Uso di un nome completo.
Uso di
invokeLater()
.