Java课程设计+文档+源代码(万年历+闹钟+记事本)文档格式.doc
- 文档编号:3587107
- 上传时间:2023-05-02
- 格式:DOC
- 页数:33
- 大小:550.20KB
Java课程设计+文档+源代码(万年历+闹钟+记事本)文档格式.doc
《Java课程设计+文档+源代码(万年历+闹钟+记事本)文档格式.doc》由会员分享,可在线阅读,更多相关《Java课程设计+文档+源代码(万年历+闹钟+记事本)文档格式.doc(33页珍藏版)》请在冰点文库上搜索。
2.写了几个函数获取今年第一天是星期几,然后根据月份天数即可推算具体某月第一天是星期几。
3.知道一个月第一天是星期几,则该月日历既可以顺序列出。
闹钟的功能实现思路:
1.获取界面设定的时间。
2.使用线程,每过一秒急救获取当前时间,并判断是否到达设定的时间
3.到设定的时间,启动弹窗,播放闹铃
4.闹铃科根据文件选择器自行选择
记事本功能实现思路
1.在项目文件夹先新建一个txt文件作为储存的数据库
2.利用File类和io数据流将界面文本储存进txt文件,实现保存功能
3.每当程序启动,读取txt文件内容并显示到界面上
三、测试分析
1.使用如下拓展包
2.程序界面截图如下
日历主界面
闹钟界面
记事本界面
3.测试流程及功能介绍
(1)
点击上一月、下一月可查看不同月份日历,左下角显示当前时间。
点击蓝色的日期栏可以回到当前页
(2)
点击圈中按钮会出现弹框,可以调节年、月,查看指定年月日历
(3)
闹铃可以使用默认闹铃,也能自定义选择闹铃,不过闹铃格式只能为wav或au
时间到了以后出现弹框,并响起闹铃
(4)
记事本输入文本,按保存即可。
(5)
点击最小化按钮,可以选择普通缩小或者直接缩小到托盘.
附录:
源代码(注:
在工程目录下新建文件夹source,并添加了闹铃文件,txt,托盘图片,如图)
AlarmDemo.java
importjava.applet.Applet;
importjava.applet.AudioClip;
importjava.awt.BorderLayout;
importjava.awt.Dimension;
importjava.awt.Font;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.io.File;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;
importjavax.swing.*;
importjavax.swing.text.DefaultFormatterFactory;
importjavax.swing.text.NumberFormatter;
publicclassAlarmDemoextendsJPanelimplementsRunnable{
privatestaticfinallongserialVersionUID=-7066237267822356675L;
Threadalarm;
publicAudioClipsoumd1;
Calendarc=Calendar.getInstance();
JButtonsure=newJButton("
确定"
);
JButtonopen=newJButton("
可选择闹铃"
JLabeljLabel=newJLabel("
设置时间日-时-分"
JLabel.CENTER);
JLabeldayLabel=newJLabel("
日"
JLabelhourLabel=newJLabel("
时"
JLabelminuteLabel=newJLabel("
分"
JPaneljPanel1=newJPanel();
JPaneljPanel2=newJPanel();
JPaneljPanel3=newJPanel();
JPaneljPanel4=newJPanel();
JTextFieldmusic=newJTextField(System.getProperty("
user.dir"
)+"
\\source\\alarm.wav"
inty=0,m=0,h=0,mi=0,d=0;
booleanfo=false;
publicAlarmDemo(){
music.setEditable(false);
//设置标签格式
dayLabel.setFont(newFont("
Dialog"
1,30));
hourLabel.setFont(newFont("
minuteLabel.setFont(newFont("
jLabel.setFont(newFont("
//按钮设置
sure.setContentAreaFilled(false);
sure.setFocusPainted(false);
open.setContentAreaFilled(false);
open.setFocusPainted(false);
JSpinnerspinner1=newJSpinner();
JSpinnerspinner2=newJSpinner();
JSpinnerspinner3=newJSpinner();
spinner3.setModel(newSpinnerNumberModel(c.get(Calendar.DATE),1,31,1));
spinner1.setModel(newSpinnerNumberModel(c.get(Calendar.HOUR_OF_DAY),
0,23,1));
spinner2.setModel(newSpinnerNumberModel(c.get(Calendar.MINUTE),0,59,
1));
//设置属性
setSpinners(spinner1);
setSpinners(spinner2);
setSpinners(spinner3);
jPanel4.add(jLabel);
jPanel4.setPreferredSize(newDimension(500,100));
jPanel1.setLayout(newGridLayout(1,6));
jPanel1.add(spinner3);
jPanel1.add(dayLabel);
jPanel1.add(spinner1);
jPanel1.add(hourLabel);
jPanel1.add(spinner2);
jPanel1.add(minuteLabel);
jPanel1.setPreferredSize(newDimension(500,100));
jPanel2.setLayout(newBorderLayout());
jPanel2.add(jPanel4,BorderLayout.NORTH);
jPanel2.add(music,BorderLayout.CENTER);
jPanel2.add(open,BorderLayout.EAST);
jPanel3.setLayout(newGridLayout(1,1));
jPanel3.add(sure);
setLayout(newBorderLayout());
add(jPanel1,BorderLayout.NORTH);
add(jPanel2,BorderLayout.CENTER);
add(jPanel3,BorderLayout.SOUTH);
open.addActionListener(newActionListener(){
publicvoidactionPerformed(ActionEventevent){
JFileChooserfileChooser=newJFileChooser();
//实例化文件选择器
fileChooser
.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
//设置文件选择模式,此处为文件和目录均可
fileChooser.setCurrentDirectory(newFile("
."
));
//设置文件选择器当前目录
.setFileFilter(newjavax.swing.filechooser.FileFilter(){
publicbooleanaccept(Filefile){//可接受的文件类型
Stringname=file.getName().toLowerCase();
returnname.endsWith("
.wav"
)
||name.endsWith("
.au"
||file.isDirectory();
}
publicStringgetDescription(){//文件描述
return"
音乐文件(*.wav,*.au)"
;
});
if(fileChooser.showOpenDialog(AlarmDemo.this)==JFileChooser.APPROVE_OPTION){//弹出文件选择器,并判断是否点击了打开按钮
StringfileName=fileChooser.getSelectedFile()
.getAbsolutePath();
//得到选择文件或目录的绝对路径
music.setText(fileName);
}
}
});
sure.addActionListener(newActionListener(){
if(sure.getText().equals("
)){
try{
d=(int)spinner3.getValue();
h=(int)spinner1.getValue();
mi=(int)spinner2.getValue();
if(1<
=d&
&
d<
=31&
0<
=h&
h<
=23&
=mi
&
mi<
=59){
fo=true;
jLabel.setText("
设置闹钟成功"
spinner1.setEnabled(false);
spinner2.setEnabled(false);
spinner3.setEnabled(false);
start();
}else
JOptionPane.showMessageDialog(null,"
输入时间错误"
}catch(Exceptione){
JOptionPane.showMessageDialog(null,"
请输入正确的时间"
}
}else{
spinner1.setEnabled(true);
spinner2.setEnabled(true);
spinner3.setEnabled(true);
fo=false;
stop();
soumd1.stop();
sure.setText("
jLabel.setText("
}
publicvoidstart(){
if(alarm==null){
alarm=newThread(this);
alarm.start();
}
publicvoidstop()//停止线程
{
alarm=null;
publicvoidrun(){
while(true){
Datenow=newDate();
if(fo){
sure.setText("
关闭"
SimpleDateFormatri=newSimpleDateFormat("
dd"
//封装为了获取日期
SimpleDateFormatshi=newSimpleDateFormat("
kk"
//封装为了获取小时
SimpleDateFormatfen=newSimpleDateFormat("
mm"
//封装为了获取分
intriqi=Integer.parseInt(ri.format(now));
//获取日期
intshizhong=Integer.parseInt(shi.format(now));
//获取小时
intfenzhong=Integer.parseInt(fen.format(now));
//获取分钟
if(riqi==d&
shizhong==h&
fenzhong==mi)//判断条件
{
soumd1=Applet.newAudioClip(newFile(music.getText())
.toURL());
//播放音乐
soumd1.loop();
fo=false;
时间到了!
!
(⊙v⊙)"
e.printStackTrace();
try{
Thread.sleep(1000);
}catch(InterruptedExceptionie){
publicvoidsetSpinners(JSpinnerspinner){
JSpinner.NumberEditoreditor=newJSpinner.NumberEditor(spinner,"
0"
spinner.setEditor(editor);
JFormattedTextFieldtextField=((JSpinner.NumberEditor)spinner
.getEditor()).getTextField();
textField.setFont(newFont("
1,45));
textField.setEditable(true);
DefaultFormatterFactoryfactory=(DefaultFormatterFactory)textField
.getFormatterFactory();
NumberFormatterformatter=(NumberFormatter)factory
.getDefaultFormatter();
formatter.setAllowsInvalid(false);
}
CalendarsView.java
importjava.awt.AWTException;
importjava.awt.Color;
importjava.awt.Frame;
importjava.awt.SystemTray;
importjava.awt.TrayIcon;
importjava.awt.event.MouseAdapter;
importjava.awt.event.MouseEvent;
importjava.awt.event.MouseListener;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.io.IOException;
importjavax.imageio.ImageIO;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JScrollPane;
importjavax.swing.JTabbedPane;
importjavax.swing.JTable;
importjavax.swing.Timer;
importjavax.swing.table.DefaultTableModel;
publicclassCalendarsViewextendsJFrame{
privatestaticfinallongserialVersionUID=1L;
staticCalendarc=Calendar.getInstance();
staticintyear=c.get(Calendar.YEAR);
staticintmonth=c.get(Calendar.MONTH)+1;
intmonthday=0;
String[]weekdaystr={"
星期日"
"
星期一"
星期二"
星期三"
星期四"
星期五"
星期六"
};
Object[][]monthview=newString[6][7];
JPaneldayPanel=newJPanel();
JPanelpanel1=newJPanel();
JPanelcalPanel=newJPanel();
JPanelalarmDemo=newAlarmDemo();
JPanelnoteBook=newNoteBook();
JTabbedPanejTabbedPane=newJTabbedPane(JTabbedPane.TOP);
JButtonPrebutton=newJButton("
上一月"
JButtonNextbutton=newJButton("
下一月"
JButtonPreYear=newJButton("
上一年"
JButtonNextYear=newJButton("
下一年"
JButtonChange=newJButton(c.get(Calendar.YEAR)+"
年"
+(c.get(Calendar.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程设计 文档 源代码 万年历 闹钟 记事本