java实现动态时钟并设置闹钟功能

本文实例为大家分享了java实现动态时钟设置闹钟功能,供大家参考,具体内容如下

显示如上图所示的动态时钟,并且可以设置闹钟,播放mp3。

首先用到的是时钟(Timer)和日历(Calendar)得到系统的当前时间。

代码如下:

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("动态时钟");
    clockPanel = new MyPanel();
    add(clockPanel);
    Timer t = new Timer();
    Task task = new Task();
    t.schedule(task, 0, 1000);//每秒刷新一次
  } 

  File file = new File("当我想你的时候.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();// Ԥ准备读取
      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("当我想你的时候.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);//窗体显示在屏幕中央 

    //输入要设置的闹钟时间
    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);//整点时间
    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 = "当前时间:" + 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文件需要下载对应的jar包,否则不能播放。

下载地址:java实现动态时钟

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • java开发之闹钟的实现代码
  • java实现的小时钟示例分享
  • Android手机闹钟用法实例
  • java多线程编程制作电子时钟
  • 简单实现Android闹钟程序 附源码
  • Android闹钟设置的解决方案
  • Android编程实现闹钟的方法详解
  • Java编程小实例—数字时钟的实现代码示例
  • 简单实现Android闹钟功能
  • Android闹钟机制实现定时任务功能
(0)

相关推荐

  • Android手机闹钟用法实例

    本文实例讲述了Android手机闹钟用法.分享给大家供大家参考.具体如下: 一.开发手机闹钟主要用到了AlarmManager类,AlarmManager类提供了访问系统定时服务的途径,开发人员可以在程序中设置某个应用程序在未来的某个时刻被执行.当AlarmManager定时时间到了之后,当初注册的Intent对象将会被系统广播,进而启动目标程序. 二.在程序运行时当需要使用AlarmManager类时,可以通过Context对象的getSystemService(Context.ALARM_S

  • 简单实现Android闹钟功能

    闹钟的简单实现,只有显示时间和设置闹钟. AlarmView package com.example.lenovo.clock2; import android.app.AlarmManager; import android.app.PendingIntent; import android.app.TimePickerDialog; import android.content.Context; import android.content.DialogInterface; import a

  • java开发之闹钟的实现代码

    项目结构: 效果图一: 效果图二: 效果图三: 关于闹钟: 复制代码 代码如下: Alarm hongten v1.0 使用说明: 此文件夹中包括:             src文件夹       存放图片和声音文件夹,使用程序的时候,请不要删除此文件夹             alarm.jar    主要的功能程序jar包(要求安装jdk1.5或以上版本)             ReadMe.txt     说明文档 1.菜单功能说明 文件-- >               上传铃声(

  • Android闹钟机制实现定时任务功能

    Android的闹钟实现机制, 需要调用AlarmManager.set()将闹铃时间记录到系统中,当闹铃时间到后,系统会给应用程序发送广播,我们只需要去注册广播接收器就可以了. 本文分三部分讲解如何实现闹钟: 目录: 1. 设置闹铃时间; 2. 接收闹铃事件广播; 3. 重开机后重新计算并设置闹铃时间; 1. 设置闹铃时间(毫秒) private void setAlarmTime(Context context, long triggerAtMillis) { AlarmManager am

  • java多线程编程制作电子时钟

    模拟一个电子时钟,它可以在任何时候被启动或者停止,并可以独立的运行. 1.定义一个Clock类.它继承Label类,并实现Runnable接口.这个类中有一个Thread类型的clocker域,以及start()和run()方法.在run()方法中,每隔一秒就把系统时间显示为label的文本. class Clock extends Label implements Runnable { //定义Thread类型的clocker域 public Thread clocker=null; publ

  • Java编程小实例—数字时钟的实现代码示例

    本文的实例是Java编程实现一个数字时钟,代码测试可用,练练手吧.代码如下: package me.socketthread; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.util.Calendar; import java.util.GregorianCalenda

  • java实现的小时钟示例分享

    复制代码 代码如下: //package com.clock; import java.awt.BasicStroke;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;i

  • 简单实现Android闹钟程序 附源码

    这个应用实现了简单的闹钟功能,关闭程序的状态中也可以进行闹钟的提醒. 这里遗留了一个问题: 如果我通过应用本身关闭程序,是可以实现我上述所说的功能,但是如果我在手机进程管理中实现应用程序的关闭操作,这个提醒就不起作用了,我很疑惑的是,我通过应用程序本身关闭了后,在进程中也是查看不到这个应用了的.所以哪位知道的帮留个言指点下,谢谢. ClockDemo.java package com.example.clock; import java.util.Calendar; import android

  • Android编程实现闹钟的方法详解

    本文实例讲述了Android编程实现闹钟的方法.分享给大家供大家参考,具体如下: 在Android中,有一个闹钟的类,AlarmManager类,我们可以通过其来对系统内的通知进行操作! 本文用到了Service和Broadcast两个后台管理,在处理时,曾出现过很多问题,但经过半天的努力,终于解决了! 首先是Main.xml文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns

  • Android闹钟设置的解决方案

    Android设置闹钟并不像IOS那样这么简单,做过Android设置闹钟的开发者都知道里面的坑有多深.下面记录一下,我解决Android闹钟设置的解决方案. 主要问题 1.API19开始AlarmManager的机制修改. 2.应用程序被Kill掉后,设置的闹钟不响. 3.6.0以上进入Doze模式会使JobScheduler停止工作. 4.手机设置重启后,闹钟失效问题. API19以上AlarmManager机制的修改 API19之前AlarmManager提供了三个设置闹钟的方法,由于业务

随机推荐