Heim >Java >javaLernprogramm >Warum blinkt mein TextField nur einmal? (Swing-Timer- und ActionListener-Problem)
Problembehandlung: Flash-Verhalten in einem Swing-Timer
Im bereitgestellten Java-Code ist ein Timer mit einem ActionListener konfiguriert, um den Hintergrund zu aktualisieren Farbe eines Textfeldes in abwechselnder Reihenfolge. Während der Timer den ActionListener entsprechend auslöst, wird die Farbänderung nur in der ersten Iteration beobachtet.
Ursache
Ihr Hauptfehler liegt in der benutzerdefinierten Implementierung Ihres ActionListeners . Insbesondere die folgenden zwei Probleme behindern die ordnungsgemäße Funktionalität:
Auflösung
Führen Sie die folgenden Änderungen durch:
<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>
Durch die Anwendung dieser Änderungen aktualisiert der Timer nun effektiv die Hintergrundfarbe des Textfelds kontinuierlich.
Das obige ist der detaillierte Inhalt vonWarum blinkt mein TextField nur einmal? (Swing-Timer- und ActionListener-Problem). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!