我有一个继承自JPanel的类,上面有一个图像,我想设置一个小动画来显示面板/图像,然后在事件触发时将其淡出.
我可能会设置一个线程并触发动画,但我该怎么做呢?
我试图在文本字段中闪烁背景颜色.我的计时器设置如下:
Flash flash = new Flash(); //set up timer
tmr = new javax.swing.Timer(1000, new Flash());
tmr.addActionListener(flash);
tmr.setInitialDelay(0);
tmr.setRepeats(true);
tmr.start();
Run Code Online (Sandbox Code Playgroud)
我的actionListener如下:
static class Flash implements ActionListener
{
public void actionPerformed(ActionEvent evt)
{
if (flasher)
{
SpreademPanel.historyPnl.NameTxt.setBackground(Color.white);
}
else
{
SpreademPanel.historyPnl.NameTxt.setBackground(Color.pink);
}
flasher = !flasher;
} //actionPerformed
} //Flash
Run Code Online (Sandbox Code Playgroud)
现在,当我把它放在调试中并按照动作执行时,程序会反复执行闪存并在两个备选项之间切换.但是在屏幕上,只有第一个切换发生.之后,没有动作,虽然闪光灯仍在运转.
这有什么不对?
在此先感谢您的帮助.
基本上,我有这个游戏,一旦猜到正确答案,它开始一个新单词的新游戏.我想显示Correct!但三秒后,将其更改为空字符串.我怎么做?
我的尝试:
if (anagram.isCorrect(userInput.getText()))
{
anagram = new Anagram();
answer.setText("CORRECT!");
word.setText(anagram.getRandomScrambledWord());
this.repaint();
try
{
Thread.currentThread().sleep(3000);
}
catch (Exception e)
{
}
answer.setText("");
} else
{
answer.setForeground(Color.pink);
answer.setText("INCORRECT!");
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我的解决方案
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
if (anagram.isCorrect(userInput.getText()))
{
answer.setText("CORRECT!");
ActionListener taskPerformer = new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
anagram = new Anagram();
word.setText(anagram.getRandomScrambledWord());
answer.setText("");
userInput.setText("");
}
};
Timer timer = new Timer(3000, taskPerformer);
timer.setRepeats(false);
timer.start();
} else
{
answer.setForeground(Color.pink); …Run Code Online (Sandbox Code Playgroud)