闹钟源代码(js闹钟代码)
admin 发布:2022-12-19 21:31 151
今天给各位分享闹钟源代码的知识,其中也会对js闹钟代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、用MFC编写一个指针型时钟程序,时钟还具有闹钟和倒计时功能,求能在mfc里执行的整个文件
- 2、用JAVA编一个小闹钟
- 3、用Android studio做一个可以运行的小程序,闹钟也行,然后可以连到手机,感谢大神。
- 4、用VB编写一个闹钟程序
- 5、微信小程序添加闹钟代码
用MFC编写一个指针型时钟程序,时钟还具有闹钟和倒计时功能,求能在mfc里执行的整个文件
一、程序窗口设计步骤
(1)用AppWizard生成一个名为Clock的单文档(SDI)程序框架。为了简化应用程序,在第四步时去掉Docking toolbar和Initial status bar选择项(不删除也可),其他各选项均可用缺省设置。
(2)编辑项目的菜单资源,在主框架窗口的主菜单(IDR_MAINFRAME)中添加一个名为“时钟控制”的下拉菜单。在“时钟控制”菜单中添加三个菜单选项“启动时钟”、“停止时钟”和“时间设置”。并在菜单属性项中设定“启动时钟”菜单的ID标号为ID_START,“停止时钟”菜单的ID标号为ID_STOP,“时间设置”菜单的ID标号为ID_SETTIME。为了简化菜单,可删除系统原有的“文件”、“编辑”菜单项。
(3)利用ClassWizard为视图类添加菜单命令处理函数。进入ClassWizard的Message Maps选项卡,选择Class Name项为CClockView类,在Object IDs列表框中分别选择新添加的菜单选项的ID,在Messages列表框中选择COMMAND,按下Add Function按钮添加成员函数。ClassWizard会为“启动时钟”、“停止时钟”和“时间设置”菜单选项添加相应的消息响应函数OnStart ( )、OnStop ( )和OnSettime ( )。
(4)利用ClassWizard为视图类添加定时器和鼠标消息处理函数。进入ClassWizard的Message Maps选项卡,选择Class Name项为 CClockView类,在Messages列表框中分别选择定时器消息WM_TIMER和鼠标消息WM_LBUTIONDOWN,按下Add Function按钮添加成员函数。ClassWizard会添加相应的定时器和鼠标消息响应函数OnTimer和OnLButtonDown。
(5)使用Developer Studio菜单的Insert / Resource…选项调出Insert Source对话框,为项目添加新的对话框资源。在对话框属性中,修改对话框名为“时间设定”。在对话框中增加用来输入年、月、日、时、分、秒的编辑框控件。
通过控件属性,将年、月、日、时、分、秒等编辑控件的ID改为IDC_YEAR、IDC_MONTH、IDC_DAY、IDC_HOUR、IDC_MINUTE和IDC_SECOND。
(6)利用ClassWizard自动建立对话框类。进入ClassWizard后,弹出一个对话框询问是否要为该对话框模板建立类。按下“OK”按钮,会弹出New Class对话框,在Name栏填写对话框类的名称CSetTimeDlg后按“OK”按钮,即可为对话框创建一个对应的类。
(7) 利用ClassWizard为对话框类添加与各控件对应的数据成员。选择MemberVariables选项卡,确保Class Name项为对话框CSetTimeDlg类,然后在选项卡下方的窗口中选择各控件的ID并按下“Add Variable…”按钮,为其添加对应成员变量。
控制ID
变量类型
变量名
变量范围
IDC_YEAR
int
m_Year
0~3000
IDC_MONTH
int
m_Month
1~12
IDC_DAY
int
m_Day
1~31
IDC_HOUR
int
m_Hour
0~23
IDC_MINUTE
int
m_Minute
0~59
IDC_SECOND
int
m_Second
0~59
最后一列为变量取值范围。
(8)编辑工程的图标资源,在Resource View选项窗口中修改Icon结点所包含的主框架图标(IDR_MAINFRAME)。此步非必须。
(9)完成以上工作后,即可修改程序框架,添加必要的代码。
二、主要源代码:
按以下步骤向视图类(CClockView)添加下列数据成员及成员函数。
(1) 添加表示年、月、日、时、分、秒的变量。
int year;
int month;
int day;
int hour;
int minute;
int second;
(2) 添加秒表的计数变量。
int watch;
(3) 添加时钟的画笔及画刷变量。
CPen m_HouPen, m_MinPen, m_SecPen; // 各种针的画笔
CBrush m_MarkBrush; // 表盘标记的画刷
(4) 添加时钟控制变量。
CPoint m_Center; // 表的中心
double m_Radius; // 表的半径
CPoint m_Hour [2], m_OldHour [2]; // 时针当前及前一次位置
CPoint m_Minute [2], m_OldMin [2]; // 分针当前及前一次位置
CPoint m_Second [2], m_OldSec [2]; // 秒针当前及前一次位置
(5) 添加秒表的两个按钮位置变量。
CRect m_WatchStart;
CRect m_WatchStop;
(6) 添加两个函数,计算时钟各指针位置。
void SetClock (int hour, int minute, int second);
CPoint GetPoint (int nLenth, int nValue);
(7) 在视图类构造函数中增加初始化语句,之前加上头文件
#includectime
CClockView::CClockView()
{
// 设定时间
char time[32];
SYSTEMTIME st;
GetLocalTime(st);
day = st.wDay;
hour = st.wHour;
minute = st.wMinute;
month = st.wMonth;
second = st.wSecond;
year = st.wYear;
// 设定画笔/画刷
m_HouPen. CreatePen (PS_SOLID, 5, RGB (255, 0, 0) ); // 时针画笔
m_MinPen. CreatePen (PS_SOLID, 3, RGB (0, 0, 250) ); // 分针画笔
m_SecPen. CreatePen (PS_SOLID, 1, RGB (0, 0, 0) ); // 秒针画笔
m_MarkBrush. CreateSolidBrush (RGB (250, 250, 0) );
// 设定表心位置
m_Center. x = 200;
m_Center. y = 200;
// 设定时钟半径
m_Radius = 200;
// 计算指针位置
SetClock (hour, minute, second);
// 设定秒表计数器及按钮位置
watch = 0;
m_WatchStart = CRect (480, 310, 560, 340); // 启动钮
m_WatchStop = CRect (590, 310, 670, 340); // 停止钮
}
编写指针位置计算函数SetClock和GetPoint。首先在ClockView. cpp文件头部添加下面两行代码,以便进行数学计算。
#include "math.h"
#define PI 3.14159265
然后添加下列代码:
//计算各个指针位置的函数
void CClockView::SetClock(int hour, int minute, int second)
{
hour=hour*5;
hour=hour+minute/12;
// 保存时针原位置
m_OldHour [0] = m_Hour[0];
m_OldHour [1] = m_Hour[1];
// 计算时针当前位置
m_Hour[0]= GetPoint(int(m_Radius/2),hour);
m_Hour[1]= GetPoint(7,hour + 30);
// 保存分针原位置
m_OldMin[0]= m_Minute[0];
m_OldMin[1]= m_Minute[1];
// 计算分针当前位置
m_Minute[0]=GetPoint(int(m_Radius*7/10), minute);
m_Minute[1]=GetPoint(10, minute+30);
// 保存秒针原位置
m_OldSec [0] = m_Second [0];
m_OldSec [1] = m_Second [1];
// 计算秒针当前位置
m_Second [0]= GetPoint (int(m_Radius * 8/10), second);
m_Second [1] = GetPoint (30, second + 30);
}
// 计算以表心为原点的指针的端点位置
CPoint CClockView ::GetPoint (int nLenth, int nValue)
{
CPoint p;
double angle = nValue* PI /30-PI/2;
p.x = m_Center.x + (int) (nLenth * cos(angle));
p.y = m_Center.y + (int) (nLenth * sin(angle));
return p;
}
绘制表盘上的标记、时针、分针和秒针,并显示数字时钟及秒表,在OnDraw函数中添加下面代码:
void CClockView::OnDraw(CDC* pDC)
{
CClockDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// 绘制表盘上的标记
pDC-SelectObject(m_MarkBrush);
int k=0;
for(int i=0;i60;i++)
{
CPoint pt=GetPoint(175,i);
if (i%5==0)
{
//显示表盘上的数字
CString str[12]={"12","1","2","3","4","5","6","7","8","9","10","11"};
pDC-TextOut(pt.x-5,pt.y-5,str[k]);
k++;
}else
{
//显示数字之间的圆圈
pDC-Ellipse(pt.x-2,pt.y-2,pt.x+2,pt.y+2);
}
}
// 画时针
pDC-SelectObject (m_HouPen);
if (m_OldHour[0]!= m_Hour[0])
{
// 用白色覆盖原位置时针
pDC-SetROP2(R2_WHITE);
pDC-MoveTo(m_OldHour [0] );
pDC-LineTo(m_OldHour [1] );
pDC-SetROP2(R2_COPYPEN);
//时针绘制
pDC-MoveTo(m_Hour[0]);
pDC-LineTo(m_Hour[1]);
}
else
{
// 时针绘制
pDC-MoveTo(m_Hour[0]);
pDC-LineTo(m_Hour[1]);
}
// 画分针
pDC-SelectObject (m_MinPen);
if (m_OldMin[0]!=m_Minute[0])
{
// 用白色覆盖原位置分针
pDC-SetROP2(R2_WHITE);
pDC-MoveTo(m_OldMin[0]);
pDC-LineTo(m_OldMin[1]);
pDC-SetROP2(R2_COPYPEN);
// 分针绘制
pDC-MoveTo(m_Minute[0]);
pDC-LineTo(m_Minute[1]);
}
else
{
// 分针绘制
pDC-MoveTo(m_Minute[0]);
pDC-LineTo(m_Minute[1]);
}
// 用白色覆盖原位置秒针
pDC-SelectObject(m_SecPen);
pDC-SetROP2(R2_WHITE);
pDC-MoveTo(m_OldSec[0]);
pDC-LineTo(m_OldSec[1]);
pDC-SetROP2(R2_COPYPEN);
// 秒针绘制
pDC-MoveTo(m_Second[0]);
pDC-LineTo(m_Second[1]);
// 数字时钟显示
pDC-SelectStockObject(WHITE_BRUSH);
pDC-Rectangle(450,30,700,180);
pDC-TextOut(535,20,"当前时间");
CString m_Date,m_Time;
m_Date.Format ("% 4d年%4d月%4d日",year,month,day);
pDC-TextOut(510,70,m_Date);
m_Time.Format("%4d点%4d分%4d秒",hour,minute,second);
pDC-TextOut(510,100,m_Time);
// 秒表显示
pDC-Rectangle(450,220,700,370);
pDC-TextOut(545,200,"秒 表");
int minSec= watch%100;
int Sec=(watch/100)%60;
int Min=(watch/100)/60;
m_Time.Format("% 02d: % 02d: % 02d",Min,Sec,minSec);
pDC-TextOut(535,260,m_Time);
pDC-Rectangle(m_WatchStart);
pDC-Rectangle(m_WatchStop);
pDC-TextOut(m_WatchStart.left + 18,m_WatchStart.top + 5,"启动");
pDC-TextOut(m_WatchStop.left + 18,m_WatchStop.top + 5,"停止");
}
请注意将表示时间的整数转换为CString字符串类型的方法以及秒表的显示方法。另外,watch计数器以1/100秒为计数单位,每达到100则秒数加1。
按照下列步骤增加时钟控制代码:
修改Onstart和OnStop函数,设置时钟运动消息。按比正常时钟快20倍的假定,50ms产生一个消息。本程序采用和正常时间同步,即1000ms产生一个消息, 其代码为:
void CClockView::OnStart()
{
SetTimer (1, 1000, NULL);
}
void CClockView::OnStop()
{
KillTimer (1);
}
修改OnTimer函数,正确计算并处理年、月、日、时、分、秒等变量的联动变化 ,其代码为:
void CClockView::OnTimer(UINT nIDEvent)
{
if (nIDEvent == 1)
{
second++; // 秒增加
if (second59)
{
second=0;
minute++; // 分增加
}
if (minute59)
{
minute= 0;
hour++; // 小时增加
}
if (hour23)
{
hour=0;
day++; // 日增加
}
switch(month)
{
case 1: // 大月
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (day31)
{
day= 1;
month++; // 月增加
}
break;
case 4: // 小月
case 6:
case 9:
case 11:
if (day30)
{
day=1;
month++; // 月增加
}
break;
case 2:
if (year%4 ==0 day29) // 润二月
{
day=1;
month++; // 月增加
}
if (year%4!=0 day28) // 二月
{
day=1;
month++;
}
break;
}
if (month 12)
{
// 年增加
year++;
month=1;
}
SetClock (hour, minute, second);
Invalidate (false);
}
// 秒表定时器消息处理
if (nIDEvent == 2)
{
watch++;
Invalidate (false);
}
CView::OnTimer(nIDEvent);
}
添加时间设置对话框代码。
首先在ClockView. cpp文件头部添加下列语句:
#include “SetTimeDlg. h”
在时间设定对话框类的构造函数中,做如下修改,将初始日期设为当前时间,之前要加上头文件
#includectime
CSetTimeDlg::CSetTimeDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSetTimeDlg::IDD, pParent)
{
//||AFX_DATA_INIT(CSetTimeDlg)
char time[32];
SYSTEMTIME st;
GetLocalTime(st);
m_Day = st.wDay;
m_Hour = st.wHour;
m_Minute = st.wMinute;
m_Month = st.wMonth;
m_Second = st.wSecond;
m_Year = st.wYear;// ||AFX_DATA_INIT
}
最后,在OnSettime函数中添加代码如下:
void CClockView::OnSettime()
{
CSetTimeDlg SetDlg;
if (SetDlg.DoModal ()==IDOK)
{
year=SetDlg.m_Year;
month= SetDlg.m_Month;
day= SetDlg.m_Day;
hour=SetDlg.m_Hour;
minute=SetDlg.m_Minute;
second=SetDlg.m_Second;
}
// 计算各指针位置
SetClock (hour,minute,second);
Invalidate (true);
}
按以下步骤设计秒表控制程序:
在OnLButtonDown函数中增加下列内容,以便响应单击秒表启动、停止框所发出的消息:
void CClockView::OnLButtonDown(UINT nFlags, CPoint point)
{
if (m_WatchStart.PtInRect(point))
{
watch=0;
SetTimer(2,10,NULL);
}
if (m_WatchStop.PtInRect(point))
{
KillTimer (2);
}
CView::OnLButtonDown(nFlags, point);
}
编译,连接,运行程序。
运行结果:
用JAVA编一个小闹钟
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;
public class Clock extends JFrame implements ActionListener {
public final int HEIGTH = 200, L0 = 50, T0 = 50,N=8;
public final double RAD = Math.PI / 180.0;
int x, y, old_X, old_Y, r, x0, y0, w, h, ang;
int sdo, mdo, hdo, old_M, old_H, hh, mm, ss;
int delay = 1000;
Calendar now;
String st, alarm, Items1, Items2,str[];
JButton jb;
JComboBox jc1, jc2, jc3;
JLabel jl1, jl2, jl3, jl4;
JMenu jm1, jm2, jm3, jm4;
JMenuBar jmb;
JMenuItem jmi1, jmi2, jmi3, jmi4, jmi5, jmi6, jmi7, jmi8, jmi9,jmi10;
JTextField jtf1, jtf2, time;
JPanel jp1, jp2, jp3;
Timer timer;
TimeZone tz = TimeZone.getTimeZone("JST");
Toolkit toolkit=Toolkit.getDefaultToolkit();;
/**
* br
* 方法说明:实现ActionListener类必须过载的方法
*/
public static void main(String[] args) {
Clock cp = new Clock();
cp.setVisible(true);
}
Clock() {
super("Java闹钟!");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(550, 700);
setVisible(true);
Container contentPane = getContentPane();
jp2 = new JPanel();
jmb = new JMenuBar();
jm1 = new JMenu("背景颜色设置 ", true);
jmi1 = new JMenuItem("外圈颜色");
jmi1.addActionListener(this);
jmi1.setActionCommand("color1");
jm1.add(jmi1);
jmi2 = new JMenuItem("闹钟边线颜色");
jmi2.addActionListener(this);
jmi2.setActionCommand("color2");
jm1.add(jmi2);
jmi3=new JMenuItem("底盘颜色");
jmi3.addActionListener(this);
jmi3.setActionCommand("color3");
jm1.add(jmi3);
jmi4=new JMenuItem("系统时间背静颜色");
jmi4.addActionListener(this);
jmi4.setActionCommand("color4");
jm1.add(jmi4);
jmb.add(jm1);
jm2 = new JMenu("指针颜色设置 ", true);
jmi5 = new JMenuItem("秒针颜色");
jmi5.addActionListener(this);
jmi5.setActionCommand("color5");
jm2.add(jmi5);
jmi6 = new JMenuItem("分针颜色");
jmi6.addActionListener(this);
jmi6.setActionCommand("color6");
jm2.add(jmi6);
jmi7 = new JMenuItem("时针颜色");
jmi7.addActionListener(this);
jmi7.setActionCommand("color7");
jm2.add(jmi7);
jmb.add(jm2);
jm3 = new JMenu("闹铃声音设置 ", true);
jmi8 = new JMenuItem("响铃1");
jmi8.addActionListener(this);
jmi8.setActionCommand("ring1");
jm3.add(jmi8);
jmi9 = new JMenuItem("静音");
jmi9.addActionListener(this);
jmi9.setActionCommand("ring2");
jm3.add(jmi9);
jmb.add(jm3);
jm4 = new JMenu("帮助 ", true);
jmi10=new JMenuItem("使用说明");
jmi10.addActionListener(this);
jmi10.setActionCommand("help");
jm4.add(jmi10);
jmb.add(jm4);
jp2.add(jmb);
contentPane.add(jp2, BorderLayout.NORTH);
jp3 = new JPanel();
jl1 = new JLabel("闹铃时间");
jl1.setFont(new Font("楷体_GB2312", Font.BOLD, 18));
time = new JTextField("00:00", 5);
alarm = time.getText();
jb = new JButton("修改闹铃时间");
jb.addActionListener(this);
jb.setActionCommand("CC");
jp3.add(jl1);
jp3.add(time);
jp3.add(jb);
contentPane.add(jp3, BorderLayout.SOUTH);
ClockPanel clock = new ClockPanel();
contentPane.add(clock, BorderLayout.CENTER);
// 窗体添加事件监听,监听秒表的触发
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent evt) {
repaint();
}
};
new Timer(delay, taskPerformer).start();
}
/**
* br
* 方法说明:绘制图形
*/
Color C1 = Color.lightGray;// 外圈颜色
Color C2 = Color.black;// 边线颜色
Color C3 = Color.magenta;// 内盘颜色
Color C4 = Color.blue;// 背景颜色
Color C5 = Color.yellow;// 秒针颜色
Color C6 = Color.green;// 分针颜色
Color C7 = Color.red;//时针颜色
public class ClockPanel extends JPanel {
public void paint(Graphics g) {
h = getSize().height - 200;
// 绘制圆形
g.setColor(C1);
g.fillOval(L0 + 30, T0 + 30, h - 60, h - 60);
g.setColor(C2);
g.drawOval(L0 + 31, T0 + 31, h - 62, h - 62);
g.setColor(C3);
g.fillOval(L0 + 50, T0 + 50, h - 100, h - 100);
g.setColor(C2);
g.drawOval(L0 + 51, T0 + 51, h - 102, h - 102);
r = h / 2 - 30;
x0 = 30 + r - 5 + L0;
y0 = 30 + r - 5 - T0;
ang = 60;
for (int i = 1; i = 12; i++) {
x = (int) ((r - 10) * Math.cos(RAD * ang) + x0);
y = (int) ((r - 10) * Math.sin(RAD * ang) + y0);
g.drawString("" + i, x, h - y);
ang -= 30;
}
x0 = 30 + r + L0;
y0 = 30 + r + T0;
g.drawString("指针式时钟", 215, 200);
// 获取时间
now = Calendar.getInstance();
hh = now.get(Calendar.HOUR_OF_DAY);// 小时
mm = now.get(Calendar.MINUTE);// 分钟
ss = now.get(Calendar.SECOND);// 秒
g.setColor(C4);
g.fillRect(5, 550, 150, 30);// 填充的矩形
g.setColor(C6);
if (hh 10)
st = "0" + hh;
else
st = "" + hh;
if (mm 10)
st = st + ":0" + mm;
else
st = st + ":" + mm;
if(alarm.equals(st))
{
if(toolkit!=null)
toolkit.beep();
else {}
}
if (ss 10)
st = st + ":0" + ss;
else
st = st + ":" + ss;
{
g.setFont(new Font("华文楷体", Font.BOLD, 16));
g.drawString("系统时间:" + st, 10, 570);
}
// 计算时间和图形的关系
sdo = 90 - ss * 6;
mdo = 90 - mm * 6;
hdo = 90 - hh * 30 - mm / 2;
// 擦除秒针
if (old_X 0) {
g.setColor(C3);
} else {
old_M = mdo;
old_H = hdo;
}
// 绘制秒针
g.setColor(C5);
x = (int) ((r - 26) * Math.cos(RAD * sdo) + x0);
y = (int) ((r - 26) * Math.sin(RAD * sdo) + y0) - 2 * T0;
g.drawLine(x0, y0, x, (h - y));
old_X = x;
old_Y = y;
// 擦除分针和时针
if (mdo != old_M) {
g.setColor(C3);
old_M = mdo;
}
if (hdo != old_H) {
g.setColor(C3);
old_H = hdo;
}
// 绘制分针
g.setColor(C6);
x = (int) ((r - 50) * Math.cos(RAD * mdo) + x0);
y = (int) ((r - 50) * Math.sin(RAD * mdo) + y0) - 2 * T0;
g.drawLine(x0, y0, x, (h - y));
// 绘制时针
g.setColor(C7);
x = (int) ((r - 90) * Math.cos(RAD * hdo) + x0);
y = (int) ((r - 90) * Math.sin(RAD * hdo) + y0) - 2 * T0;
g.drawLine(x0, y0, x, (h - y));
} // end paint
}
// 闹铃时间的判断及实现
// 闹铃声音的实现
public void actionPerformed(ActionEvent e) {
// JMenuItem m = (JMenuItem) e.getSource();
if (e.getActionCommand() == "CC") {
int newHou, newMin;
char c;
String getTime = JOptionPane.showInputDialog(this, "请输入闹铃时间格式如:", "00:00");
repaint();
//如果撤消设置时间,就什么打印null
if(getTime==null)
System.out.println(getTime);
// dispose();
judge: if (getTime != null) {
//打印输入的设置的时间
System.out.println(getTime);
// 判断输入的是不是5位字符
if (getTime.length() != 5) {
JOptionPane.showMessageDialog(time, "格式错误\n请按格式输入5位数字", "Error",
JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
// 判断输入的是不是数字
for (int i = 0; i (getTime.length()); i++) {
c = getTime.charAt(i);
if (i == 2 !Character.isDigit(c))
continue;
// 判断当前字符,如果不是数字则跳出该事件
if (i != 2 !Character.isDigit(c)) {
JOptionPane.showMessageDialog(this, "格式错误\n请按格式输入5位数字",
"Error",JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
}
char[] hour = { getTime.charAt(0), getTime.charAt(1) };
char[] minute = { getTime.charAt(3), getTime.charAt(4) };
newHou = Integer.parseInt(String.valueOf(hour));
newMin = Integer.parseInt(String.valueOf(minute));
if (newHou = 24 || newHou 0) {
JOptionPane.showMessageDialog(this, "格式错误\n小时应该是不小于0不大于23的正数",
"Error", JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
if (newMin = 60 || newHou 0) {
JOptionPane.showMessageDialog(this, "格式错误\n分钟应该是小于60的正数", "Error",
JOptionPane.ERROR_MESSAGE);
repaint();
break judge;
}
new SetTime(newHou, newMin);
}
}
if (e.getActionCommand() == "ring1") {
toolkit=Toolkit.getDefaultToolkit();
}
if(e.getActionCommand() == "ring2"){
System.out.println("静音");
toolkit=null;
}
if (e.getActionCommand() == "color1") {
String color;
Color c;
System.out.println("color1");
color = JOptionPane.showInputDialog(this, "请输入喜欢的外圈颜色(0--255)", "128");
if (color == null) {
} else {
if (Integer.parseInt(color) 0
|| Integer.parseInt(color) 255)
JOptionPane.showInputDialog(this, "请输入喜欢的外圈颜色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C1 = c;
}
}
}
if(e.getActionCommand() == "color2"){
String color;
Color c;
System.out.println("color2");
color = JOptionPane.showInputDialog(this, "请输入喜欢的边线颜色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) 0|| Integer.parseInt(color) 255)
JOptionPane.showInputDialog(this, "请输入喜欢的边线颜色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C2 = c;
}
}
}
if(e.getActionCommand() == "color3"){
String color;
Color c;
System.out.println("color3");
color = JOptionPane.showInputDialog(this, "请输入喜欢的内盘颜色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) 0|| Integer.parseInt(color) 255)
JOptionPane.showInputDialog(this, "请输入喜欢的内盘颜色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C3 = c;
}
}
}
if(e.getActionCommand() == "color4"){
String color;
Color c;
System.out.println("color4");
color = JOptionPane.showInputDialog(this, "请输入喜欢的背景颜色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) 0|| Integer.parseInt(color) 255)
JOptionPane.showInputDialog(this, "请输入喜欢的背景颜色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C4 = c;
}
}
}
if(e.getActionCommand() == "color5"){
String color;
Color c;
System.out.println("color5");
color = JOptionPane.showInputDialog(this, "请输入喜欢的秒针颜色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) 0|| Integer.parseInt(color) 255)
JOptionPane.showInputDialog(this, "请输入喜欢的秒针颜色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C5 = c;
}
}
}
if(e.getActionCommand() == "color6"){
String color;
Color c;
System.out.println("color6");
color = JOptionPane.showInputDialog(this, "请输入喜欢的分针颜色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) 0|| Integer.parseInt(color) 255)
JOptionPane.showInputDialog(this, "请输入喜欢的分针颜色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C6 = c;
}
}
}
if(e.getActionCommand() == "color7"){
String color;
Color c;
System.out.println("color7");
color = JOptionPane.showInputDialog(this, "请输入喜欢的时针颜色(0--255)", "128");
if(color==null){}
else{if (Integer.parseInt(color) 0|| Integer.parseInt(color) 255)
JOptionPane.showInputDialog(this, "请输入喜欢的时针颜色(0--255)", "128");
else {
c = new Color(Integer.parseInt(color));
C7 = c;
}
}
}
if(e.getActionCommand() == "help"){
String help;
help = JOptionPane.showInputDialog(this, "输入quit退出该闹钟的使用", "这是运行在Java中的指针式时钟");
if(help.equals("quit"))
dispose();
else {}
// timer.restart();
}
}
class SetTime {
String Hour;
String Minute;
public SetTime() { }
public SetTime(int hour, int minute) {
// 当时间参数小于10的时候在前面添加字符0
if (hour 10) {
Hour = "0" + String.valueOf(hour);
} else {
Hour = "" + String.valueOf(hour);
}
if (minute 10) {
Minute = "0" + String.valueOf(minute);
} else {
Minute = "" + String.valueOf(minute);
}
alarm = Hour + ":" + Minute;
time.setText(alarm);
repaint();
}
}
}
用Android studio做一个可以运行的小程序,闹钟也行,然后可以连到手机,感谢大神。
环境搭建就不讲了,直接说开发。
小闹钟程序开发中的要点就是:
1、时间选择对话框(TimePicker)
2、获取闹钟管理器并对其进行设置
3、注册广播接收器
掌握了这两点,写程序就很简单了。
1、新建android项目:Alarm,sdk版本选择2.2,Package name:com.lql.activity,Main Activity:Alarm
2、编写界面:直接修改layout中的main.xml文件,代码如下:
Xml代码
?xml version="1.0" encoding="utf-8"?
LinearLayout xmlns:android=""
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical"
Button
android:id="@+id/timeBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/time"
android:textSize="20sp"
/
Button
android:id="@+id/cancelAlarmBtn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/cancelAlarm"
/
/LinearLayout
界面的效果如下:
3、修改Alarm.java这个activity,在该Activity中需要做这样几件事:
获取界面上的两个按钮组件,并给其绑定事件监听器
第一个时间按钮,点击后,显示时间选择对话框(TimePicker),供选择小时和分钟,并设置闹钟
第二个按钮,点击之后需要当前设定的闹钟
比较难写的代码就是闹钟设置:
//设置时间
Java代码
timeBtn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
Log.d(TAG, "click the time button to set time");
calendar.setTimeInMillis(System.currentTimeMillis());
new TimePickerDialog(Alarm.this,new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker arg0, int h, int m) {
//更新按钮上的时间
timeBtn.setText(formatTime(h,m));
//设置日历的时间,主要是让日历的年月日和当前同步
calendar.setTimeInMillis(System.currentTimeMillis());
//设置日历的小时和分钟
calendar.set(Calendar.HOUR_OF_DAY, h);
calendar.set(Calendar.MINUTE, m);
//将秒和毫秒设置为0
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
//建立Intent和PendingIntent来调用闹钟管理器
Intent intent = new Intent(Alarm.this,AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(Alarm.this, 0, intent, 0);
//获取闹钟管理器
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
//设置闹钟
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 10*1000, pendingIntent);
Toast.makeText(Alarm.this, "设置闹钟的时间为:"+String.valueOf(h)+":"+String.valueOf(m), Toast.LENGTH_SHORT).show();
Log.d(TAG, "set the time to "+formatTime(h,m));
}
},calendar.get(Calendar.HOUR_OF_DAY),calendar.get(Calendar.MINUTE),true).show();
}
});
代码里面有注释,这里就不多解释了,其中new TimePickerDialog为创建时间选择对话框。为了能够看到效果,我给闹钟添加了重复提醒:alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 10*1000, pendingIntent);。
还要为取消闹钟按钮添加事件监听器:
Java代码
//取消闹钟按钮事件监听
final Button cancelAlarmBtn = (Button)findViewById(R.id.cancelAlarmBtn);
cancelAlarmBtn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
Intent intent = new Intent(Alarm.this,AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(Alarm.this, 0, intent, 0);
//获取闹钟管理器
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
Toast.makeText(Alarm.this, "闹钟已经取消!", Toast.LENGTH_SHORT).show();
}
});
在点击取消闹钟按钮时,取消之前设置的闹钟,核心代码就4行。
4、编写广播接收器,用来接收闹钟的广播事件,然后进行相关处理,
Java代码
public class AlarmReceiver extends BroadcastReceiver {
/* (non-Javadoc)
* @see android.content.BroadcastReceiver#onReceive(android.content.Context, android.content.Intent)
*/
@Override
public void onReceive(Context arg0, Intent data) {
Log.d(Alarm.TAG, "the time is up,start the alarm...");
Toast.makeText(arg0, "闹钟时间到了!", Toast.LENGTH_SHORT).show();
}
}
这个代码就很简单了,主要是要继 承 BroadcastReceiver 这个类,然后重写onRecive方法。onRecive方法在闹钟的时间达到之后会执行,在这里我们可以做自己的事情,比如启动某个程序,或者播放铃声,我这里就是简单的提示一下,使用的是Toast。
5、在android的AndroidManifest.xml文件中注册广播接收器:
manifest xmlns:android=""
Xml代码
package="com.ql.activity"
android:versionCode="1"
android:versionName="1.0"
application android:icon="@drawable/icon" android:label="@string/app_name"
receiver android:name=".AlarmReceiver" android:process=":remote" /
activity android:name=".Alarm"
android:label="@string/app_name"
intent-filter
action android:name="android.intent.action.MAIN" /
category android:name="android.intent.category.LAUNCHER" /
/intent-filter
/activity
/application
uses-sdk android:minSdkVersion="8" /
/manifest
核心的配置为receiver android:name=".AlarmReceiver" android:process=":remote" /,这也是闹钟程序的关键,如果不做这个配置,那么时间到了之后,闹钟将不会提示。
接下来就是到模拟器上测试,运行截图如上图。程序源代码见附件。
用VB编写一个闹钟程序
做一个简单的闹钟程序很简单的。我这里不用if语句。首先我们在窗体上添加一个标签控件,再画一个“闹钟”,将闹钟得interval属性改为1000,双击闹钟,进入闹钟的代码视图,编写代码
private
sub
timer1_timer()
label1.caption
=
time
end
sub就行了。谢谢采纳
微信小程序添加闹钟代码
微信小程序可以添加闹钟代码。
整个闹钟项目的代码分为3部分,分别是:闹钟主页、闹钟记录、闹钟设置;
A. 闹钟主页的功能有点类似番茄闹钟,它由一个倒计时工具构成,只要客户点击按钮,就会开始倒计时;
B. 闹钟记录主要记录了客户每次的点击操作,有点类似日志;
C. 闹钟设置可以自定义设置一些参数,包括设置工作时长、休息时长、背景音乐、背景图片。
闹钟源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于js闹钟代码、闹钟源代码的信息别忘了在本站进行查找喔。
版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;
- 上一篇:关于游戏源代码不同的模式的信息
- 下一篇:c编写游戏代码(c 游戏代码)
相关推荐
- 05-03查询区域代码的软件下载(区域查询系统代码)[20240503更新]
- 05-03设置横向打印js代码(web怎么横向打印)[20240503更新]
- 05-03android代码大全(android 代码)[20240503更新]
- 05-03html简单网页代码登录(html简单注册登录界面代码)[20240503更新]
- 05-03企业qq代码(代码名称)[20240503更新]
- 05-03包含asp学生选课系统代码的词条[20240503更新]
- 05-03熊猫直播代码(熊猫电视代码是多少)[20240503更新]
- 05-03html表格宽度600代码(html表格文字大小)[20240503更新]
- 05-03网页放大镜代码(放大镜的代码)[20240503更新]
- 05-03订单进度代码(订单进度表)[20240503更新]
取消回复欢迎 你 发表评论:
- 标签列表
- 最近发表
- 友情链接