java - 每隔几秒更改一次 jButton 的颜色

标签 java swing jbutton

我正在尝试为学校项目创建一个小按钮游戏。游戏的内容是,有几个按钮每隔 3 秒就会闪烁一种颜色,然后如果您在颜色上升时按下它,它就会保持这种颜色。

我已经创建了所有按钮并且它们显示得很好。我只需要有关实际处理代码的帮助。

  • 我遇到的困难

    timer = new Timer(length, jButton1ActionPerformed);
    timer.setInitialDelay(pause);
    
    
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {  
    
        jButton1.setBackground(Color.blue);
    
    } 
    

现在这不是我真正的游戏,我只是想掌握 Swing Timers 的窍门

现在我有了改变颜色的按钮,这是我试图让它在单击时保持该颜色的代码。

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 

       if(jButton1.getBackground().equals(Color.blue){
          jButton1.setBackground(Color.blue);
          timer.stop();  
       }

    }  

最佳答案

您将需要使用 Swing Timer 来处理您的动画。在计时器的 ActionListener 中,您将拥有随机选择一个按钮(Random 类可以在此处提供帮助)并更改其颜色的代码,可能通过 setForground(...) ,或者甚至通过使用 ImageIcons 并通过 setIcon(...) 交换图标。然后,JButton 的 ActionListener 可以检查按钮的图标或前景色并采取相应的操作。

由于这是一个学校项目,我不会发布代码解决方案,但会添加一些应该有所帮助的链接:

<小时/>

要为计时器创建一个 ActionListener,只需这样做 - 创建一个内联:

ActionListener timerListener = new ActionListener() {
  public void actionPerformed(ActionEvent evt) {
     // code to be performed every xxx mSec goes here
  }
}
int timerDelay = 3 * 1000; // or whatever length of time needed
Timer timer = new Timer(timerDelay, timerListener);

// later on in the block where you want to start your Timer
timer.start();

关于java - 每隔几秒更改一次 jButton 的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25999064/

相关文章:

java - 为什么这个 FileOutputStream 会给出 NullPointerException?

java - 控制另一个类中的对象

java - 如何在 JLabel 中显示 JTextField 的输入?如何修复反射错误?

java - 如何让 Java 在继续之前等待方法完成?

java - 多个按钮?

java - 如何在 JButton 上绘制彩色矩形?

java - int 与 String 不兼容(getLast() 方法)

java - 在Java中执行外部程序——巨大的CPU负载

java - Raspberry Pi 上的 Sqlite4java

java - 使用哪一个 : Java Swing or GTK+ for GNOME desktop application?