Работя по проект за тетрис и откривам, че трябва да използвам и двете javax.swing.Timer и java.util.Timer, Но един от тях не работи. Може ли някой да даде някакъв поглед върху този проблем?
Отговори:
1 за отговор № 1Да, можете да използвате двата класа заедно, но трябва да въведете пълния пакет по този начин
java.util.Timer myUtilTimer= ..
javax.swing.Timer myUtilTimer= ..
Освен това трябва да се грижите за този изход java.util.Timer
трябва да бъде обвит SwingUtilities.invokeLater(myRunnable);
да добавите към EDT в противен случай не е гарантирано, че нещо трябва да бъде изобразено / променено / пребоядисано
2 за отговор № 2
да, можете да използвате 2 класа със същото име, но вместо да ги импортирате, трябва да използвате пълния квалификатор:
а именно:
javax.swing.Timer timer = new ...
1 за отговор № 3
Да, можете, но ако използвате и двете в един и същ java файл, ще трябва да получите достъп до един от класа с пълното име на пакета като java.util.Timer
защото ще получите конфликт, ако импортирате и двата класа.
1 за отговор № 4
В този бетон пример, „А javax.swing.Timer
нарастване ан int
при 100 Hz, докато a java.util.TimerTask
изважда стойността при 1 Hz. "A LinkedBlockingQueue<Integer>
синхронизира достъпа до споделените данни и записва последните N
проби. Примерът илюстрира характеристики на трите предходни отговора:
Използване на напълно квалифицирано име.
Използване на
invokeLater()
.