当前位置:首页 > java日历记事本(无敌版带提醒功能调整时区更换图片铃声功能)
SimpleDateFormat sdf = new SimpleDateFormat(\年MM月dd日 hh:mm:ss a\
sdf.setTimeZone(TimeZone.getTimeZone(CalendarPad.timeArea)); String s_time_msg = sdf.format(timenow); nowClock = new Clock(
calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND) );
g.clearRect(0,0,this.getWidth(),this.getHeight()); g.setFont(new Font(\宋体\ g.drawString(s_time_msg,70,400); nowClock.show(g,230,210,150);
//闹钟功能:如果当前时间与 设置的闹钟时间相同,则响铃;
if((ringhour==calendar.get(Calendar.HOUR_OF_DAY))&&(ringmin==calendar.get(Calendar.MINUTE))&&(calendar.get(Calendar.SECOND)==0)) {
//播放指定音频; try { URL cb;
File f = new File(CalendarPad.musicname);//音频文件; cb = f.toURL(); AudioClip aau;
aau = Applet.newAudioClip(cb); //创建AudioClip对象; aau.play();//播放音频;
} catch (MalformedURLException e) {
e.printStackTrace(); } } } }
class Clock {
int hour,minute,second;
Clock(int hrs,int min,int sec) { hour = hrs; minute = min; second = sec; }
void show(Graphics g,int cx,int cy,int rad) { int hrs_len = (int)(rad*0.5); int sec_len = (int)(rad*0.9); double theta;
g.drawOval(cx-rad,cy-rad,rad*2,rad*2);
theta=(double)(hour*60*60+minute*60+second)/43200.0*2.0*Math.PI ; drawNiddle(g,Color.blue,cx,cy,hrs_len,theta);
theta=(double)(minute*60+second)/3600.0*2.0*Math.PI ; drawNiddle(g,Color.red,cx,cy,sec_len,theta); theta=(double)(second)/60.0*2.0*Math.PI ; drawNiddle(g,Color.green ,cx,cy,sec_len,theta); }
private void drawNiddle(
Graphics g,Color c,int x,int y,int len,double theta){ int ex = (int)(x+len*Math.sin(theta)); int ey = (int)(y-len*Math.cos(theta)); g.setColor (c);
g.drawLine(x,y,ex,ey); } }
Year.java
package diaoshizhe;
import javax.swing.*; import java.awt.*; import java.awt.event.*;
//继承Box,显示日历上的年份
public class Year extends Box implements ActionListener { /**
* */
private static final long serialVersionUID = 1L;
int year; //定义年; JTextField showYear=null;//显示年的区域; JButton nextYear,lastYear;//定义按钮; CalendarPad calendar;//日历;
//构造方法;
public Year(CalendarPad calendar) {
super(BoxLayout.X_AXIS);//用super继承父类的构造方法,box中的组件从左到右布置器件;
showYear=new JTextField(4); //区域大小设置;
showYear.setForeground(Color.blue); //显示字体颜色;
showYear.setFont(new Font(\,Font.BOLD,14)); //设置字体,大小;
//把calendar的时间传进来; this.calendar=calendar; year=calendar.getYear(); //新建按钮;
nextYear=new JButton(\下年\); lastYear=new JButton(\上年\); //添加按钮;
add(lastYear); add(showYear); add(nextYear);
//添加事件监听器;
showYear.addActionListener(this); lastYear.addActionListener(this); nextYear.addActionListener(this); }
//设置年;
public void setYear(int year) {
this.year=year;
showYear.setText(\+year); }
//获取年;
public int getYear() {
return year; }
//事件监听方法;
public void actionPerformed(ActionEvent e) {
//如果点击的是lastyear按钮;
if(e.getSource()==lastYear) {
//年减去一年,重新设置日历; year=year-1;
showYear.setText(\+year); calendar.setYear(year);
calendar.setCalendar(year,calendar.getMonth()); }
//如果点击的是nextyear按钮;
else if(e.getSource()==nextYear) {
//年增加一年,重新设置日历; year=year+1;
showYear.setText(\+year); calendar.setYear(year);
calendar.setCalendar(year,calendar.getMonth()); }
//如果是在显示年的区域内写入东西; else if(e.getSource()==showYear) { try {
//获取写在该区域的内容,转化为整型,赋给year,重新设置日历; year=Integer.parseInt(showYear.getText()); showYear.setText(\+year); calendar.setYear(year);
calendar.setCalendar(year,calendar.getMonth()); }
catch(NumberFormatException ee) {
showYear.setText(\+year); calendar.setYear(year);
calendar.setCalendar(year,calendar.getMonth()); } } } }
Month.java
package diaoshizhe;
import javax.swing.*; import java.awt.*;
import java.awt.event.*;
//继承Box,用于显示日历上的月份,并可选择上月,下月; public class Month extends Box implements ActionListener { /** * */ private static final long serialVersionUID = 1L; int month; JTextField showMonth=null; JButton nextMonth,lastMonth; CalendarPad calendar;
共分享92篇相关文档