這篇文章給大家分享的是有關(guān)java如何實(shí)現(xiàn)動態(tài)時鐘并設(shè)置鬧鐘功能的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
創(chuàng)新互聯(lián)建站專注于忻城企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),商城網(wǎng)站定制開發(fā)。忻城網(wǎng)站建設(shè)公司,為忻城等地區(qū)提供建站服務(wù)。全流程按需策劃設(shè)計(jì),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
具體內(nèi)容如下
顯示如上圖所示的動態(tài)時鐘,并且可以設(shè)置鬧鐘,播放mp3。
首先用到的是時鐘(Timer)和日歷(Calendar)得到系統(tǒng)的當(dāng)前時間。
代碼如下:
import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Ellipse2D; import java.awt.geom.Line2D; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Timer; import java.util.TimerTask; import javax.media.CannotRealizeException; import javax.media.Manager; import javax.media.MediaLocator; import javax.media.NoPlayerException; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPanel; import javazoom.jl.player.Player; public class Clock extends JFrame { MyPanel clockPanel; Ellipse2D.Double e; int x; int y; Line2D.Double hourLine; Line2D.Double minLine; Line2D.Double secondLine; GregorianCalendar calendar; int hour; int minute; int second; String timestr = ""; static int sethour; static int setminute; static int setsecond; public static final int X = 60; public static final int Y = 60; public static final int X_BEGIN = 10; public static final int Y_BEGIN = 10; public static final int RADIAN = 50; public Clock(){ setSize(300, 200); setTitle("動態(tài)時鐘"); clockPanel = new MyPanel(); add(clockPanel); Timer t = new Timer(); Task task = new Task(); t.schedule(task, 0, 1000);//每秒刷新一次 } File file = new File("當(dāng)我想你的時候.mp3"); public static void playMusic(File file) { //顯示mp3文件的絕對路徑 try { javax.media.Player player = null; if (file.exists()) { MediaLocator locator = new MediaLocator("file:" + file.getAbsolutePath()); System.out.println(file.getAbsolutePath()); player = Manager.createRealizedPlayer(locator); player.prefetch();// ?準(zhǔn)備讀取 player.start();// 開始讀取 } else { System.out.println("沒找到文件"); } } catch (CannotRealizeException ex) { ex.printStackTrace(); } catch (NoPlayerException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } } public void play() {//播放mp3文件 try { BufferedInputStream buffer = new BufferedInputStream(new FileInputStream("當(dāng)我想你的時候.mp3")); Player player = new Player(buffer); player.play(); } catch (Exception e) { System.out.println(e); } } public static void main(String[] args) { Clock t = new Clock(); t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); t.setVisible(true); //t.setLocationRelativeTo(null);//窗體顯示在屏幕中央 //輸入要設(shè)置的鬧鐘時間 sethour = Integer.parseInt(JOptionPane.showInputDialog("請輸入小時:")); setminute = Integer.parseInt(JOptionPane.showInputDialog("請輸入分鐘:")); setsecond = Integer.parseInt(JOptionPane.showInputDialog("請輸入秒:")); } class MyPanel extends JPanel { public MyPanel() { e = new Ellipse2D.Double(X_BEGIN, Y_BEGIN, 100, 100); hourLine = new Line2D.Double(X, Y, X, Y); minLine = new Line2D.Double(X, Y, X, Y); secondLine = new Line2D.Double(X, Y, X, Y); } public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.drawString("12", 55, 25);//整點(diǎn)時間 g2.drawString("6", 55, 105); g2.drawString("9", 15, 65); g2.drawString("3", 100, 65); g2.drawString(timestr, 0, 130); g2.draw(e); g2.draw(hourLine);//時針 g2.draw(minLine);//分針 g2.draw(secondLine);//秒針 } } class Task extends TimerTask { public void run() { calendar = new GregorianCalendar(); hour = calendar.get(Calendar.HOUR); minute = calendar.get(Calendar.MINUTE); second = calendar.get(Calendar.SECOND); if(sethour == hour && setminute == minute && setsecond == second){ playMusic(file); play(); } timestr = "當(dāng)前時間:" + hour + " : " + minute + " : " + second; hourLine.x2 = X + 40 * Math.cos(hour * (Math.PI / 6) - Math.PI / 2); hourLine.y2 = Y + 40 * Math.sin(hour * (Math.PI / 6) - Math.PI / 2); minLine.x2 = X + 45 * Math.cos(minute * (Math.PI / 30) - Math.PI / 2); minLine.y2 = Y + 45 * Math.sin(minute * (Math.PI / 30) - Math.PI / 2); secondLine.x2 = X + 50 * Math.cos(second * (Math.PI / 30) - Math.PI / 2); secondLine.y2 = Y + 50 * Math.sin(second * (Math.PI / 30) - Math.PI / 2); repaint(); } } }
其中播放mp3文件需要下載對應(yīng)的jar包,否則不能播放。
感謝各位的閱讀!關(guān)于“java如何實(shí)現(xiàn)動態(tài)時鐘并設(shè)置鬧鐘功能”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
分享標(biāo)題:java如何實(shí)現(xiàn)動態(tài)時鐘并設(shè)置鬧鐘功能
網(wǎng)頁地址:http://www.muchs.cn/article26/pgdicg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、網(wǎng)站維護(hù)、微信小程序、品牌網(wǎng)站設(shè)計(jì)、自適應(yīng)網(wǎng)站、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)