1 packageClock;2
3 importsun.audio.AudioPlayer;4 importsun.audio.AudioStream;5
6 import javax.swing.*; //awt和swing是做界面用的类
7 import java.awt.*;8 importjava.awt.event.ActionEvent;9 importjava.awt.event.ActionListener;10 importjava.awt.event.WindowAdapter;11 importjava.awt.event.WindowEvent;12 import java.io.*; //io流用于读写文件,包括增删闹钟、打开铃声等等
13 import java.util.Calendar; //用于获取当前时间的类
14 import java.util.GregorianCalendar;//标准阳历
15 import java.util.StringTokenizer; //读取文件转换成计算机语言用的类
16 /*
17 1 计时器18 要求1:一个带有可视化界面的钟表。19 要求2:可以添加若干个闹钟。20 要求3:具备持久化功能,关闭程序不能丢失闹钟。21 要求4:闹钟是可编辑,可删除的。22
23 实现:先创建一个面板显示闹钟,面板内创建按钮增加闹钟,按钮查看闹钟,按钮删除闹钟24 线程间隔1s读取时间和闹钟比较25
26 */
27 public class ClockTry extends JFrame implementsRunnable {28 /*成员变量*/
29 private JPanel xx; //总的面板
30 private JComboBox ho; //hour选择时间的下拉框
31 private JComboBox mi; //min选择分钟的下拉框
32 private JButton tjnz; //添加闹钟的按钮
33 private JButton schour; //删除闹钟的按钮
34 private String filename = "D://homework//java//Gui//src//Clock//0.wav"; //所有的路径改这两个地方就可以了
35 private String pathname = "D://homework//java//Gui//src//Clock//nz.txt"; //绝对路径或相对路径都可以,写入文件时演示相对路径,读取以上路径的input.txt文件
36
37 private int HOUR; //定义HOUR用于接收按钮按下从下拉框中获取的数据
38 private int MIN; //同上
39
40 int x = 100, y = 100, r = 100; //(x,y)为(0,0)点,表示原点
41 int h, m, s; //时,分,秒
42 double rad = Math.PI / 180; //1°
43
44 private String[][] str= new String[100][2]; //定义二维数组,用于存储以及对小时和分针的操作,暂定为100个闹钟于是定义为【100】【2】
45 /**
46 *读取文件,每次的增删都需要对数据进行读取,将数据写在面板上也需要读取数据47 */
48 public voidreadFile() {49 try (FileReader reader = new FileReader(pathname); //创建一个FilReader对象,将文件读出来,相当于请教一个当地人,当地人了解本地文化,但是语言不通听不懂
50 BufferedReader br = new BufferedReader(reader) //建立一个对象,它把文件内容转成计算机能读懂的语言,相当于请一个翻译,把当地人读取的东西转换成计算机能懂的东西
51 ) {52 String line;53
54 int i =0;55 while ((line = br.readLine()) != null) { //翻译理解的东西存到line里面
56 int j =0;57 StringTokenizer st = new StringTokenizer(line, ":"); //重点:由于存储数据时都是时间,道理来说都是数字,无法区分小时部分和分钟部分
58 while (st.hasMoreTokens()){ //每读取一次读到的内容//所以这里用分割符“:”来分割,相应的,后面的写入文件也应该已“:”分割进行写入
59 str[i][j]=st.nextToken(); //把读到的内容存储在数组里面便于后面的操做——增删
60 j++; //包括上面的j=0,是将for循环拆分放进while循环中ÿ