日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 闹钟_JAVA可视化闹钟源码

發(fā)布時間:2024/9/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 闹钟_JAVA可视化闹钟源码 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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 實現(xiàn):先創(chuàng)建一個面板顯示鬧鐘,面板內創(chuàng)建按鈕增加鬧鐘,按鈕查看鬧鐘,按鈕刪除鬧鐘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用于接收按鈕按下從下拉框中獲取的數(shù)據(jù)

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]; //定義二維數(shù)組,用于存儲以及對小時和分針的操作,暫定為100個鬧鐘于是定義為【100】【2】

45 /**

46 *讀取文件,每次的增刪都需要對數(shù)據(jù)進行讀取,將數(shù)據(jù)寫在面板上也需要讀取數(shù)據(jù)47 */

48 public voidreadFile() {49 try (FileReader reader = new FileReader(pathname); //創(chuàng)建一個FilReader對象,將文件讀出來,相當于請教一個當?shù)厝?#xff0c;當?shù)厝肆私獗镜匚幕?#xff0c;但是語言不通聽不懂

50 BufferedReader br = new BufferedReader(reader) //建立一個對象,它把文件內容轉成計算機能讀懂的語言,相當于請一個翻譯,把當?shù)厝俗x取的東西轉換成計算機能懂的東西

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, ":"); //重點:由于存儲數(shù)據(jù)時都是時間,道理來說都是數(shù)字,無法區(qū)分小時部分和分鐘部分

58 while (st.hasMoreTokens()){ //每讀取一次讀到的內容//所以這里用分割符“:”來分割,相應的,后面的寫入文件也應該已“:”分割進行寫入

59 str[i][j]=st.nextToken(); //把讀到的內容存儲在數(shù)組里面便于后面的操做——增刪

60 j++; //包括上面的j=0,是將for循環(huán)拆分放進while循環(huán)中,要不然循環(huán)寫起來也很麻煩

61 }62 //System.out.print(str[i][0]+":"+str[i][1]); 寫的時候用來在控制臺打印查看效果63 //System.out.println();

64 i++;65 j = 0;66 }67 } catch(IOException e) {68 e.printStackTrace(); //try……catch拋出異常

69 }70 }71

72

73 /**

74 * 寫入TXT文件75 */

76 public voidwriteFile() {77 HOUR = Integer.valueOf(ho.getSelectedIndex()); //獲取下拉框中的值,存儲到HOUR中

78 MIN =Integer.valueOf(mi.getSelectedIndex());79 String x = HOUR + ":" +MIN;80 try (FileWriter writer = new FileWriter(pathname,true); //同上面的讀取,本地人寫入,注意:后面的append:true是表示不是重新寫,而是在后面追加

81 BufferedWriter out = new BufferedWriter(writer) //翻譯一下再寫入

82 ) {83

84 out.write(HOUR + ":" + MIN + "\r\n"); //這里寫入的時候把:寫進去了!

85 out.flush(); //把緩存區(qū)內容壓入文件,計算機的存儲過程,存在緩存區(qū)再寫入文件

86 JOptionPane.showMessageDialog(null,"鬧鐘添加成功!","添加鬧鐘提醒",JOptionPane.INFORMATION_MESSAGE); //提示框:添加鬧鐘成功

87 } catch(IOException e) {88 e.printStackTrace();89

90 }91

92 }93

94

95 /**

96 * 刪除鬧鐘,實際上是先將要刪除的數(shù)據(jù)找到移除數(shù)組,再將數(shù)組重新寫入,所以要先讀取文件,再重新寫入97 */

98 public voidshanchuFile() {99 HOUR =Integer.valueOf(ho.getSelectedIndex());100 MIN =Integer.valueOf(mi.getSelectedIndex());101 try (FileWriter writer = new FileWriter(pathname); //沒有append:true,表示重新寫!

102 BufferedWriter out = newBufferedWriter(writer)103 ) {104 readFile();105 for (int i = 0; i < 100; i++) {106 if (Integer.valueOf(str[i][0])==HOUR && Integer.valueOf(str[i][1])==MIN){107 continue;108 }109 else{110 out.write(str[i][0]+":"+str[i][1]+"\r\n"); //\r\n即為換行

111 }112 }113

114 //out.write("1"+"1"+"\r\n");//\r\n即為換行

115 out.flush(); //把緩存區(qū)內容壓入文件

116 } catch(IOException e) {117 e.printStackTrace();118 }catch(NumberFormatException e){119 System.out.println("this isn't exist!");120 JOptionPane.showMessageDialog(null,"該鬧鐘已刪除!","刪除鬧鐘提醒",JOptionPane.INFORMATION_MESSAGE); //彈窗提示

121 }122 }123

124 /*初始化函數(shù)*/

125 public voidinit() {126

127 Calendar now = new GregorianCalendar(); //獲取當前時間

128 /*

129 * GregorianCalendar(標準陽歷)130 * 是Calendar(日歷)【國際環(huán)境下都能運行的程序】131 * 的子類132 */

133 s = now.get(Calendar.SECOND) * 6; //秒針轉換成角度:1秒,秒針動一次,轉動6°

134 m = now.get(Calendar.MINUTE) * 6; //分針轉換為角度:1分,分針動一次,轉動6°

135 h = now.get(Calendar.HOUR) * 30 + now.get(Calendar.MINUTE) / 12 * 6; //先把分化為小時,再乘以6°,因為分針轉12°,時針才會轉1°,一小時中間有5格,數(shù)學問題

136 /*

137 * Calendar.HOUR 顯示范圍:1-12(無論AM還是PM) Calendar.HOUR_OF_DAY 顯示范圍:1-24(包括PM138 */

139

140 Thread t = new Thread(this); //添加線程,線程目標是整個程序,this

141 t.start(); //線程就緒

142 }143

144 public void paint(Graphics g) { //awt中的方法,因為要時時顯示鬧鐘,所以不得不使用繪畫的方式,不斷重繪

145 super.paint(g);146 /*

147 * paint(g)函數(shù)會重繪圖像,要加上super.paint(g),表示在原來圖像的基礎上,再畫圖。148 * 如果不加super.paint(g),重繪時,會將原有的繪制清空,再根據(jù)paing(g)函數(shù)繪制。149 */

150

151 g.setColor(Color.BLACK); //設置畫筆顏色——黑色

152 g.drawOval(x, y, r * 2, r * 2);//畫表

153 /*drawOval(x,y,width,height)以矩形恰好框住橢圓,矩形左上角的頂點坐標為(x,y)*/

154

155 //秒針

156 int x1 = (int) (90 * Math.sin(rad *s));157 int y1 = (int) (90 * Math.cos(rad *s));158 g.drawLine(r+x, r+y, r+x + x1, r +y-y1);159 /*drawLine(a,b,c,d) (a,b)為起始坐標 (c,d)為終點坐標*/

160

161 //分針

162 x1 = (int) (80 * Math.sin(rad *m));163 y1 = (int) (80 * Math.cos(rad *m));164 g.drawLine(r+x, r+y, r +x+ x1, r+y -y1);165

166 //時針

167 x1 = (int) (60 * Math.sin(rad *h));168 y1 = (int) (60 * Math.cos(rad *h));169 g.drawLine(r+x, r+y, r+x + x1, r +y-y1);170

171 //畫數(shù)字

172 int d = 30;173 for (int i = 1; i <= 12; i++) {174 x1 = (int) ((r - 10) * Math.sin(rad *d));175 y1 = (int) ((r - 10) * Math.cos(rad *d));176 g.drawString(String.valueOf(i), r+x + x1, r+y - y1); //字符型的數(shù)據(jù)才能畫

177 d += 30;178 }179

180 //畫刻度

181 d = 0;182 for (int i = 1; i <= 60; i++) {183 x1 = (int) ((r - 2) * Math.sin(rad *d));184 y1 = (int) ((r - 2) * Math.cos(rad *d));185 g.drawString(".", r+x + x1, r +y- y1); //畫的是點,表示刻度

186 d += 6;187 }188 //顯示時間

189 Calendar now1 = newGregorianCalendar();190 inta, b, c;191 a = now1.get(Calendar.HOUR_OF_DAY); //獲取當前的小時

192 b = now1.get(Calendar.MINUTE); //獲取當前的分鐘

193 c = now1.get(Calendar.SECOND); //獲取當前的秒鐘

194 g.drawString(a + ":" + b + ":" + c, 175, 330); //將時間也畫到面板上

195 g.drawString("全部鬧鐘:",100,350); //全部鬧鐘

196

197 try (FileReader reader = newFileReader(pathname);198 BufferedReader br = new BufferedReader(reader) //建立一個對象,它把文件內容轉成計算機能讀懂的語言

199 ) {200 String line;201

202 int i =0;203 while ((line = br.readLine()) != null) {204 int j =0;205 StringTokenizer st = new StringTokenizer(line, ":");206 while(st.hasMoreTokens()){207 str[i][j]=st.nextToken();208 j++;209 }210 g.drawString(str[i][0]+":"+str[i][1]+"\n",180+(i/10)*70,350+15*(i-(i/10)*10)); //貌似重新寫了一下readfile的方法,其實是有區(qū)別的,這里是讀取以后畫出來211 //qbnz.setText(str[i][0]+":"+str[i][1]+"\n");212 //System.out.print(str[i][0]+":"+str[i][1]);213 //System.out.println();

214 i++;215 j = 0;216 }217 } catch(IOException z) {218 z.printStackTrace();219 }220 }221

222

223 //實現(xiàn)Runnable,實現(xiàn)implement Runnable就務必實現(xiàn)run方法,使線程運行

224 public voidrun() {225 while (true) {226 try{227 Thread.sleep(1000);//間隔一秒

228 } catch(Exception ex) {229 }230 s += 6; //秒針每次走6°

231 if (s >= 360) {232 s = 0; //秒針歸零

233 m += 6;234 if (m == 72 || m == 144 || m == 288) {235 h += 6; //分針走72°,時針走6° 分針的12倍,時針走一次

236 }237

238 if (m >= 360) {239 m = 0; //分針歸零

240 h += 6;241 }242 if (h >= 360) {243 h = 0; //時針歸零

244 }245 }246

247

248 this.repaint(); //重新繪制249 //this.readFile();

250 this.alert(); //將鬧鐘加入到線程當中

251 }}252

253 public voidalert(){254 Calendar now1 = newGregorianCalendar();255 inta, b;256 a =now1.get(Calendar.HOUR_OF_DAY);257 b = now1.get(Calendar.MINUTE); //這里沒有獲取秒針是因為鬧鐘不看秒針。。。。。

258 try (FileReader reader = newFileReader(pathname);259 BufferedReader br = new BufferedReader(reader) //建立一個對象,它把文件內容轉成計算機能讀懂的語言

260 ) {261 String line;262 String[][] str= new String[100][2];263 int i =0;264 while ((line = br.readLine()) != null) {265 int j =0;266 StringTokenizer st = new StringTokenizer(line, ":");267 while(st.hasMoreTokens()){268 str[i][j]=st.nextToken();269 j++;270 }271 if (a==Integer.valueOf(str[i][0]) && b==Integer.valueOf(str[i][1])){ //讀取后與獲得的時間比較,如果鬧鐘存在,就響

272 try{273 InputStream in = new FileInputStream("D://homework//java//Gui//src//Clock//0.wav");//FIlename 是你加載的聲音文件如(“game.wav”)

274 AudioStream as = new AudioStream(in); //和讀取文件類似的原理,經(jīng)翻譯之后才播放出來

275 AudioPlayer.player.start(as); //用靜態(tài)成員player.start播放音樂

276 } catch(FileNotFoundException e){277 System.out.print("FileNotFoundException ");278 } catch(IOException e){279 System.out.print("有錯誤!");280 }281 }282 i++;283 j = 0;284 }285 } catch(IOException z) {286 z.printStackTrace();287 }288 }289

290 //初始化界面

291 public voidlaunchFrame(){292 xx = new JPanel(); //插入一個面板

293 String[] hours = new String[24]; //長度為24的數(shù)組用于存儲小時

294 for (int i = 0; i < hours.length; i++) {295 hours[i]=i+""; //循環(huán)對hour進行賦值

296 }297 ho = new JComboBox(hours); //將hour加入到下拉框中

298 ho.setSize(50,40); //設置大小好像沒用

299 String[] mins = new String[60]; //同理,這是分鐘的地方

300 for (int i = 0; i < mins.length; i++) {301 mins[i]=i+""; //分鐘賦值

302 }303 mi = new JComboBox(mins); //分鐘下拉框

304 mi.setSize(50,40);305 tjnz = new JButton(); //添加鬧鐘的按鈕,拼音首字母

306 tjnz.setText("添加到鬧鐘"); //按鈕上顯示的文字

307 tjnz.setSize(100,40);308 schour = new JButton(); //刪除鬧鐘的按鈕

309 schour.setText("從鬧鐘中刪除"); //按鈕上顯示的文字

310 schour.setSize(100,40);311

312 /**

313 * 將按鈕下拉框啥的加入到面板中314 */

315 xx.add(ho);316 xx.add(mi);317 xx.add(tjnz);318 xx.add(schour);319 this.add(xx); //將面板加入到this對象中,要不然面板就不顯示

320 tjnz.addActionListener(new ActionListener() { //添加按鈕的功能

321 @Override //重寫的標識,務必要會

322 public voidactionPerformed(ActionEvent e) {323 //TODO Auto-generated method stub

324 HOUR =Integer.valueOf(ho.getSelectedIndex());325 MIN = Integer.valueOf(mi.getSelectedIndex()); //獲取到時分后

326 writeFile(); //寫入txt文件保存為鬧鐘

327 readFile(); //再讀取,這樣才能時時更新面板上的全部鬧鐘

328 }});329

330 schour.addActionListener(newActionListener() {331 @Override332 public voidactionPerformed(ActionEvent e) {333 //TODO Auto-generated method stub

334 HOUR =Integer.valueOf(ho.getSelectedIndex());335 MIN =Integer.valueOf(mi.getSelectedIndex());336 shanchuFile(); //這里是刪除鬧鐘的按鈕功能

337 readFile();338 }});339

340 this.setTitle("小鬧鐘"); //設置窗口標題

341 this.setVisible(true); //設置窗口不隱身

342 this.setSize(700,500); //設置窗口大小

343 this.setLocation(500, 250); //設置窗口位置,相對于桌面左上角

344 this.init(); //調用初始化函數(shù)進行初始化

345 this.alert();346 //this.run();//重復調用run()方法結果是秒針一次走12°

347 this.addWindowListener(newWindowAdapter() {348 @Override349 public voidwindowClosing(WindowEvent e) {350 System.exit(0);351 }352 }); //設置窗口叉號的功能,點擊就關閉程序

353 }354

355

356

357 public static voidmain(String[] args) {358 ClockTry c = new ClockTry(); //main方法,必有的成分,創(chuàng)建主類對象,

359 c.launchFrame(); //調用初始化面板的方法,簡化了本該在main方法中寫的代碼

360

361 }}

總結

以上是生活随笔為你收集整理的java 闹钟_JAVA可视化闹钟源码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 天天色天天看 | 在线观看国产精品入口男同 | 麻豆视频在线 | 影音先锋丝袜美腿 | 久久久久久国产 | 泰剧19禁啪啪无遮挡 | 在线观看一区 | 爱爱精品 | 香港三级日本三级韩国三级 | 亚洲精品乱码久久久久久蜜桃图片 | 日韩在线欧美 | 国产第1页| 欧美影视一区二区三区 | 一本色道久久88亚洲精品综合 | 国产三级麻豆 | 狼色网 | 一本色道av | 国产做爰全免费的视频软件 | 凹凸福利视频 | 国产一区二区视频在线播放 | 被灌满精子的波多野结衣 | 国产乱码精品一区二三赶尸艳谈 | 中文字幕美女 | 一区三区视频 | 成人在线视频播放 | 成片免费观看视频大全 | 999zyz玖玖资源站永久 | 日韩在线电影一区二区 | 欧美成人777 | 亚洲一区二区三区在线播放 | 欧美性猛交xxxx黑人猛交 | 伊人影院亚洲 | 中文字幕人妻一区二区三区在线视频 | 婷婷久草| 成人高清免费 | av制服丝袜 | 激情视频在线观看免费 | 一区二区三区在线看 | 偷拍精品一区二区三区 | 亚洲欧美中文日韩在线 | 国产精品无码一区二区桃花视频 | 欧美精品一区三区 | 欧美另类性| 色狠狠av| caoporen在线| 一区二区不卡在线 | av撸撸在线 | 久久成人黄色 | 99精品视频国产 | 成人涩涩软件 | 中文字幕www| 熟妇大屁股一区二区三区视频 | 日本不卡三区 | 丝袜国产视频 | 国产视频一区二区 | 永久免费观看av | 日韩免费观看 | 国产精品区一区二区三 | 免费观看成人在线视频 | 草草草在线视频 | 亚洲美女屁股眼交 | 久久精品9 | 日韩一级片在线观看 | 萌白酱喷水视频 | 巨胸喷奶水www久久久免费动漫 | 91在线精品一区二区三区 | 原创少妇半推半就88av | 久久久久久无码精品人妻一区二区 | 国产毛片欧美毛片久久久 | 亚洲影视在线观看 | 狠狠澡| 色999在线 | 日本黄色免费视频 | 成都免费高清电影 | 亚洲砖区免费 | ass精品国模裸体欣赏pics | 日韩网站在线观看 | 黄网站免费在线观看 | 成人午夜免费视频 | 国产精品天天干 | 粉嫩av懂色av蜜臀av分享 | a级片中文字幕 | 亚洲三级电影 | 校园春色自拍偷拍 | 日韩精品在线免费 | 欧美在线观看www | 欧美精品乱码99久久蜜桃 | 免费三级网 | 蜜桃成人在线 | 伊人av网 | 国产精品电影院 | 国产精品久久国产精麻豆96堂 | 欧美性aaa | 天天舔天天插 | 椎名由奈在线观看 | 日韩一区二区三区免费 | 麻豆91精品 | 国产精品偷乱一区二区三区 | 少妇久久久久久被弄到高潮 |