我正在制作一个小游戏"您必须单击闪烁颜色的按钮,如果在颜色仍然在按钮上时按下它,按钮将保持该颜色。到目前为止,我有定时器设置颜色打开和关闭,但如果按下按钮,我将无法停止计时器。到目前为止,这是我的代码。
//Changes To The Colors
ActionListener timerListener = new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
jButton1.setBackground(Color.blue);
}
};
int timerDelay = 1750;
Timer timer = new Timer(timerDelay, timerListener);
//Changes Colors Back To Default
ActionListener defaultTime = new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
jButton1.setBackground(null);
}
};
int waiter = 1000;
Timer defaultState = new Timer(waiter, defaultTime);
timer.start();
timer.setRepeats(true);
defaultState.start();
defaultState.setRepeats(true);
看到我使用Netbeans,我在ActionPerformed选项中添加了这是我遇到问题的地方。它不允许我调用timer.stop();
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if(jButton1.getBackground().equals(Color.blue)){
jButton1.setBackground(Color.blue);
timer.stop();
defaultState.stop();
}
}
现在我只使用一个按钮来获得整个挥杆计时器的东西
答案 0 :(得分:1)
当您运行此代码jButton1
时,颜色会闪烁。一旦蓝色,一旦默认。 {1}在此方法中,如果按钮的背景颜色为蓝色(jButton1ActionPerformed()
),您将停止计时器。当按钮是默认按钮时(默认设置为默认值,因为您设置的颜色为if(jButton1.getBackground().equals(Color.blue))
),情况并非如此。它因为计时器重复而闪烁。如果按钮为蓝色,则可以毫无困难地停止计时器。
如果背景颜色为空,则null
条件为false。这就是为什么你的时代不会停止。
如果背景为蓝色,请点击该按钮。你的计时器将被停止。
如果您需要使用按钮颜色停止计时器,
if(jButton1.getBackground().equals(Color.blue))
希望这有帮助。