日常生活中,闹钟的应用非常广泛。使用它可以更好地帮助人们安排时间。编写程序,实现一个非常简单的闹钟,控制台会不断输出当前的时间,并且每隔一秒钟会发出提示音。用户可以单击“确定”按钮来退出程序。
思路分析:
- 首先定义一个外部类,此外部类包括延迟时间和提示标志两个成员变量,通过构造函数来获取这两个参数;
- 在此外部类中定义一个方法作为闹钟的启动函数;
- 在该方法中定义一个局部内部类来实现ActionListener接口,重写actionPerformed()方法,使用SimpleDateFormat类和Date()方法获取系统的当前时间并输出,判断提示标志,若为true则使用Toolkit.getDefaultToolkit().beep();重复之前的输出方法;创建一个新的Timer()对象来重复输出;
- 在主方法中创建对象并实例化后,使用JOptionPane类的showMessageDialog()方法弹出提示框来让用户选择是否退出。
代码如下:
import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.Timer; public class AlarmClock { private int delay; private boolean flag; public AlarmClock(int delay, boolean flag) { this.delay = delay; this.flag = flag; } public void start() { class Printer implements ActionListener { @Override public void actionPerformed(ActionEvent e) { SimpleDateFormat format = new SimpleDateFormat("k:m:s"); String result = format.format(new Date()); System.out.println("当前的时间是:" + result); if (flag) { Toolkit.getDefaultToolkit().beep(); } } } new Timer(delay, new Printer()).start(); } } import javax.swing.JOptionPane; public class Test { public static void main(String[] args) { AlarmClock clock = new AlarmClock(1000, true); clock.start(); JOptionPane.showMessageDialog(null, "是否退出?"); System.exit(0); } }
效果如图: