Maison >Java >javaDidacticiel >Pourquoi mon TextField ne clignote-t-il qu'une seule fois ? (Problème de Swing Timer et ActionListener)
Gestion des problèmes : comportement du flash dans une minuterie Swing
Dans le code Java fourni, une minuterie est configurée avec un ActionListener pour mettre à jour l'arrière-plan couleur d'un champ de texte dans une séquence alternée. Bien que la minuterie déclenche l'ActionListener de manière appropriée, le changement de couleur n'est observé que lors de l'itération initiale.
Cause fondamentale
Votre erreur principale réside dans l'implémentation personnalisée de votre ActionListener . Plus précisément, les deux problèmes suivants entravent le bon fonctionnement :
Résolution
Mettez en œuvre les modifications suivantes :
<code class="java">@Override public void actionPerformed(ActionEvent evt) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { if (flasher) { SpreademPanel.historyPnl.NameTxt.setBackground(Color.white); } else { SpreademPanel.historyPnl.NameTxt.setBackground(Color.pink); } flasher = !flasher; } }); } //actionPerformed</code>
En appliquant ces modifications, le minuteur mettra désormais à jour efficacement la couleur d'arrière-plan du champ de texte de manière continue.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!