2011-08-26 5 views
1

Je voudrais savoir comment je devrais mettre en œuvre un compte à rebours en swing.
Je suis en train de développer un jeu net avec un compte à rebours, et j'ai besoin que le chronomètre soit affiché tout le temps dans le coin.
Le problème est que je ne sais pas comment l'implémenter dans le loin que l'écran de jeu sera sensible tout le temps pour l'utilisateur dans le même temps que la minuterie est sur ..Comment mettre en œuvre un compte à rebours en swing

1.Je le demande parce que je sais que chaque mise à jour de la vue est tenue à travers le fil d'expédition d'événement, mais il peut aussi geler mon jeu s'il y a quelque chose qui fonctionne de manière cohérente (comme le minuteur).

2. Aspect de conception: Connaissez-vous quelques manières gentilles de montrer le temporisateur d'une manière attrayante et peut-être animée?

Merci beaucoup à l'avance

Répondre

2

Utilisez la classe javax.swing.Timer. Cela déclenchera des événements d'action à intervalles fixes, ce qui empêchera l'interface graphique de ne plus répondre. Pour l'animation, voir le tutoriel 2D Graphics.

+0

juste +1 pour cette – mKorbel

-1
int j=10; 
final Timer t = new Timer(1000, new ActionListener() { 
private long time = 10 * 1000; //10 seconds, for example 

public void actionPerformed(ActionEvent e) { 
    if (time > 0) { 
     time -= 1000; 
     j--; 
     jLabel1.setText(Long.toString(j)); 

    } 
} 
}); 
t.start(); 
+1

Non, l'accès ne jamais un composant Swing de l'EDT – kleopatra

+0

@kleopatra din't vous obtenez. Pouvez-vous expliquer ce qui ne va pas avec cette approche? – Raghunandan

+1

vous accédez à un composant swing hors EDT (comme vous pourriez avoir déduit de mon dernier commentaire ;-) – kleopatra

Questions connexes