ホームページ >Java >&#&チュートリアル >Javax.swing タイマーが効果的に繰り返されるのに、ActionListener が不活性のままなのはなぜですか?
アプリケーションをアニメーション化するコンテキストで、投稿者は背景色を変更すると問題が発生しました。テキストフィールドはタイマーメカニズムを通じて伝播されていましたが、予期された応答、つまり変更の繰り返しが画面上に視覚化されていませんでした。関連するコード スニペットは以下に対応します。
<code class="java">Flash flash = new Flash(); tmr = new javax.swing.Timer(1000, flash); tmr.addActionListener(flash); tmr.setInitialDelay(0); tmr.setRepeats(true); tmr.start();</code>
デバッグ時に、アクション リスナーが代替手段をループしていることが判明しましたが、最初の変更のみが表示されています。
今回の問題は、ActionListener 実装の内部欠陥から発生しました。これを修正し、根本的な動作を解明するために、変動する彩度レベルをモデル化する代替ソリューションが導入されています。
<code class="java">public class FlashTest extends JPanel { // Building blocks Timer t = null; // Timer for the color transitions Queue<color> clut = null; // Queue for holding a cycle of hues // Setup method FlashTest() { clut = new LinkedList(); // Initialize the color cycle for (int i = 0; i { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(new FlashTest()); f.pack(); f.setVisible(true); }); } }</color></code>
ここでは、カラー サイクルがキュー内に維持され、その進行を継続的に描写できます。 「paintComponent」メソッドは、背景に現在の色を常に表示することを保証します。
この解決策は、元の問題を解決するだけでなく、時間指定された色の遷移の実際的な実装も示します。
以上がJavax.swing タイマーが効果的に繰り返されるのに、ActionListener が不活性のままなのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。