/ / Utilizzare 'javax.swing.Timer' e 'java.util.Timer' nello stesso progetto? - java, altalena

Utilizzare 'javax.swing.Timer' e 'java.util.Timer' nello stesso progetto? - java, altalena

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 № 1

Sì, 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().