欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘并設(shè)置鬧鐘功能

 更新時(shí)間:2018年01月25日 09:19:35   作者:HQUZkP  
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘并設(shè)置鬧鐘功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘設(shè)置鬧鐘功能,供大家參考,具體內(nèi)容如下

顯示如上圖所示的動(dòng)態(tài)時(shí)鐘,并且可以設(shè)置鬧鐘,播放mp3。

首先用到的是時(shí)鐘(Timer)和日歷(Calendar)得到系統(tǒng)的當(dāng)前時(shí)間。

代碼如下:

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("動(dòng)態(tài)時(shí)鐘"); 
  clockPanel = new MyPanel(); 
  add(clockPanel); 
  Timer t = new Timer(); 
  Task task = new Task(); 
  t.schedule(task, 0, 1000);//每秒刷新一次 
 } 
  
 File file = new File("當(dāng)我想你的時(shí)候.mp3"); 
  
 public static void playMusic(File file) { //顯示mp3文件的絕對(duì)路徑 
  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("沒(méi)找到文件"); 
    } 
    } 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)我想你的時(shí)候.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è)置的鬧鐘時(shí)間 
  sethour = Integer.parseInt(JOptionPane.showInputDialog("請(qǐng)輸入小時(shí):")); 
  setminute = Integer.parseInt(JOptionPane.showInputDialog("請(qǐng)輸入分鐘:")); 
  setsecond = Integer.parseInt(JOptionPane.showInputDialog("請(qǐng)輸入秒:")); 
   
 } 
 
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)時(shí)間 
  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);//時(shí)針 
  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)前時(shí)間:" + 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文件需要下載對(duì)應(yīng)的jar包,否則不能播放。

下載地址:java實(shí)現(xiàn)動(dòng)態(tài)時(shí)鐘

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談Apache Maven ToolChains的使用

    淺談Apache Maven ToolChains的使用

    Maven是java中非常有用和常用的構(gòu)建工具,基本上現(xiàn)在大型的java項(xiàng)目都是Maven和gradle的天下了。本文將介紹Apache Maven ToolChains的使用。
    2021-06-06
  • Java動(dòng)態(tài)代理詳解及實(shí)例

    Java動(dòng)態(tài)代理詳解及實(shí)例

    這篇文章主要介紹了Java動(dòng)態(tài)代理詳解及實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • 圖解Java排序算法之歸并排序

    圖解Java排序算法之歸并排序

    這篇文章主要為大家詳細(xì)介紹了Java經(jīng)典排序算法之歸并排序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • java.lang.ArrayStoreException異常的解決方案

    java.lang.ArrayStoreException異常的解決方案

    這篇文章主要介紹了java.lang.ArrayStoreException異常的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Springboot項(xiàng)目打war包docker包找不到resource下靜態(tài)資源的解決方案

    Springboot項(xiàng)目打war包docker包找不到resource下靜態(tài)資源的解決方案

    今天小編就為大家分享一篇關(guān)于Springboot項(xiàng)目打war包docker包找不到resource下靜態(tài)資源的解決方案,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • Java隨機(jī)生成手機(jī)短信驗(yàn)證碼的方法

    Java隨機(jī)生成手機(jī)短信驗(yàn)證碼的方法

    這篇文章主要介紹了Java隨機(jī)生成手機(jī)短信驗(yàn)證碼的方法,涉及Java數(shù)學(xué)運(yùn)算計(jì)算隨機(jī)數(shù)及字符串操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-11-11
  • java URL亂碼的解決辦法

    java URL亂碼的解決辦法

    這篇文章介紹了java URL亂碼的解決辦法,有需要的朋友可以參考一下
    2013-09-09
  • Java調(diào)用阿里身份證實(shí)現(xiàn)驗(yàn)證接口

    Java調(diào)用阿里身份證實(shí)現(xiàn)驗(yàn)證接口

    這篇文章主要為大家詳細(xì)介紹了Java如何調(diào)用阿里身份證實(shí)現(xiàn)驗(yàn)證接口,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價(jià)值,感興趣的小伙伴可以了解一下
    2023-06-06
  • mybatis中大批量數(shù)據(jù)插入解析

    mybatis中大批量數(shù)據(jù)插入解析

    這篇文章主要介紹了mybatis中大批量數(shù)據(jù)插入解析,使用Mybatis框架批量插入的3種方法,分別是多次調(diào)用insert方法、foreach標(biāo)簽、batch模式,本文來(lái)詳細(xì)說(shuō)明一下,需要的朋友可以參考下
    2024-01-01
  • Java Spring數(shù)據(jù)單元配置過(guò)程解析

    Java Spring數(shù)據(jù)單元配置過(guò)程解析

    這篇文章主要介紹了Java Spring數(shù)據(jù)單元配置過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-12-12

最新評(píng)論