java课程设计报告实用万年历记事本Word文档下载推荐.docx
- 文档编号:22455506
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:23
- 大小:160.19KB
java课程设计报告实用万年历记事本Word文档下载推荐.docx
《java课程设计报告实用万年历记事本Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《java课程设计报告实用万年历记事本Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
年、月、日Year,month,dayInt
显示日期showDayJTextField[]
日历对象calendarPadCalendarPad
日志对象notepadNotePad
月JTextField[]ShowMonth
年JTextField[]ShowYear
图像对象CalendarImagecalendarImage
时钟对象Clockclock
处理日期CalendarMessaecalendarMessae
nextYear、nextMonth、
previousYear、previousMonth、
按钮对象JButtonsaveDailyRecord、
deleteDailyRecord、
readDailyRecord
(2)方法见表
主要方法
方法名功能备注CalendarWindow创建程序主窗口构造方法
doMark对日志日期做出标记focusGained处理FocusListener事件mousePressed处理MouseEvent事件
处理ActionEvent事件actionPerformed接口方法
程序开始运行main
-2-
(3)源代码见文件CalendarWindow
二(CalendarMessage
(1)成员变量见表
表1-4主要成员变量(属性)
记录日志的年、月、日intyear、month、day
(2)方法见表1-5
表1-5主要方法
方法名功能备注
SetDay、getDay设置、获取日期setMonth/getMonth设置、获取月份setYear、getYear设置、获取年份getMonthCalendar()处理日期数据(3)源代码见文件CalendarMessage.java
importjava.util.Calendar;
publicclassCalendarMessage{
intyear=-1,month=-1,day=-1;
publicvoidsetYear(intyear){
this.year=year;
}
publicintgetYear(){
returnyear;
publicvoidsetMonth(intmonth){
if(month<
=12&
&
month>
=1)
this.month=month;
else
this.month=1;
publicintgetMonth(){
returnmonth;
publicvoidsetDay(intday){
this.day=day;
publicintgetDay(){
returnday;
publicString[]getMonthCalendar(){
String[]day=newString[42];
-3-
Calendarrili=Calendar.getInstance();
rili.set(year,month-1,1);
//将日历翻到year年month月1日,注意0表示一月...11表示十二月
int星期几=rili.get(Calendar.DAY_OF_WEEK)-1;
intdayAmount=0;
if(month==1||month==3||month==5||month==7||month==8||month==10
||month==12)
dayAmount=31;
if(month==4||month==6||month==9||month==11)
dayAmount=30;
if(month==2)
if(((year%4==0)&
(year%100!
=0))||(year%400==0))
dayAmount=29;
dayAmount=28;
for(inti=0;
i<
星期几;
i++)
day[i]="
"
;
for(inti=星期几,n=1;
星期几+dayAmount;
i++){
day[i]=String.valueOf(n);
n++;
for(inti=星期几+dayAmount;
42;
3(CalendarPad
表1-6主要成员变量(属性)
成员变量描述变量类型名称确定年份、月份、日期的整数year、month、dayInt
calendarPad处理和日期有关的数据CalendarPad
showDay显示日期JTextField
星期String[]
(2)方法见表
表1-7主要方法
CalendarPad创建calendarPad对象构造方法
-4-
setShowDayText
Field负责设置showDay数组(JTextField[]
)
setCalendarMes负责设置sage(CalendarMcalendarMessage对象essage)
showMonthCalen负责显示“日历”dar()
(3)源代码见文件CalendarPad.java
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.util.*;
publicclassCalendarPadextendsJPanel{
intyear,month,day;
CalendarMessagecalendarMessage;
JTextField[]showDay;
JLabeltitle[];
String[]星期={"
SUN日"
"
MON一"
TUE二"
WED三"
THU四"
FRI
五"
SAT六"
};
JPanelnorth,center;
publicCalendarPad(){
setLayout(newBorderLayout());
north=newJPanel();
north.setLayout(newGridLayout(1,7));
center=newJPanel();
center.setLayout(newGridLayout(6,7));
add(center,BorderLayout.CENTER);
add(north,BorderLayout.NORTH);
title=newJLabel[7];
for(intj=0;
j<
7;
j++){
title[j]=newJLabel();
title[j].setFont(newFont("
TimesRoman"
Font.BOLD,12));
[j]);
title[j].setText(星期
title[j].setHorizontalAlignment(JLabel.CENTER);
title[j].setBorder(BorderFactory.createRaisedBevelBorder());
north.add(title[j]);
title[0].setForeground(Color.red);
title[6].setForeground(Color.blue);
publicvoidsetShowDayTextField(JTextField[]text){
showDay=text;
showDay.length;
showDay[i].setFont(new
Font("
Font.BOLD,15));
showDay[i].setHorizontalAlignment(JTextField.CENTER);
-5-
showDay[i].setEditable(false);
center.add(showDay[i]);
publicvoidsetCalendarMessage(CalendarMessage
calendarMessage){
this.calendarMessage=calendarMessage;
publicvoidshowMonthCalendar(){
String[]a=calendarMessage.getMonthCalendar();
showDay[i].setText(a[i]);
validate();
4(NotePad
1)成员变量见表1-8(
表1-8主要成员变量(属性)
JTextArea可编辑多行文本text
显示和日期有关的数据showMessageJTextField
menuJpopupMenu下月,上月
itmeCopy、itmeCut、复制,剪切,粘贴,清空JMenuItemitemPaste、itmeClear
(2)方法见表9
表9主要方法
NotePad创建notePad构造方法setShowMessage指定日期数据,显示日(int,int,int)期信息
Save(File,指定日期,保存日志int,int,int)
Save(File,指定日期,删除日志int,int,int)
read(File,int,读取参数日期日志int,int)
(3)源代码见文件NotePad.java
-6-
importjava.io.*;
publicclassNotePadextendsJPanelimplementsActionListener{
JTextAreatext;
JTextFieldshowMessage;
JPopupMenumenu;
JMenuItemitemCopy,itemCut,itemPaste,itemClear;
publicNotePad(){
showMessage=newJTextField();
showMessage.setHorizontalAlignment(JTextField.CENTER);
showMessage.setFont(newFont("
Font.BOLD,16));
showMessage.setForeground(Color.blue);
showMessage.setBackground(Color.pink);
showMessage.setBorder(BorderFactory.createRaisedBevelBorder());
showMessage.setEditable(false);
menu=newJPopupMenu();
itemCopy=newJMenuItem("
复制"
);
itemCut=newJMenuItem("
剪切"
itemPaste=newJMenuItem("
粘贴"
itemClear=newJMenuItem("
清空"
itemCopy.addActionListener(this);
itemCut.addActionListener(this);
itemPaste.addActionListener(this);
itemClear.addActionListener(this);
menu.add(itemCopy);
menu.add(itemCut);
menu.add(itemPaste);
menu.add(itemClear);
text=newJTextArea(10,10);
text.addMouseListener(newMouseAdapter(){
publicvoidmousePressed(MouseEvent
e){
if(e.getModifiers()==InputEvent.BUTTON3_MASK)
menu.show(text,e.getX(),e.getY());
});
add(showMessage,BorderLayout.NORTH);
add(newJScrollPane(text),BorderLayout.CENTER);
publicvoidsetShowMessage(intyear,intmonth,intday){
showMessage.setText("
+year+"
年"
+month+"
月"
+day+"
日"
publicvoidsave(Filedir,intyear,intmonth,intday){
StringdailyContent=text.getText();
StringfileName="
.txt"
-7-
Stringkey="
+day;
String[]dayFile=dir.list();
booleanboo=false;
for(intk=0;
k<
dayFile.length;
k++){
if(dayFile[k].startsWith(key)){
boo=true;
break;
if(boo){
Stringm="
已有日志,将新的内容添加到日志吗?
intok=JOptionPane.showConfirmDialog(this,m,"
询问"
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
if(ok==JOptionPane.YES_OPTION){
try{
Filef=newFile(dir,fileName);
RandomAccessFileout=newRandomAccessFile(f,"
rw"
longfileEnd=out.length();
byte[]bb=dailyContent.getBytes();
out.seek(fileEnd);
out.write(bb);
out.close();
catch(IOExceptionexp){}
else{
还没有日志,保存日志吗?
publicvoiddelete(Filedir,intyear,intmonth,intday){
-8-
删除"
日的日志吗?
FiledeleteFile=newFile(dir,fileName);
deleteFile.delete();
无日志记录"
JOptionPane.showMessageDialog(this,m,"
提示
JOptionPane.WARNING_MESSAGE);
publicvoidread(Filedir,intyear,intmonth,intday){
有日志,显示日志内容吗?
text.setText(null);
FileReaderinOne=newFileReader(f);
BufferedReaderinTwo=newBufferedReader(inOne);
Strings=null;
while((s=inTwo.readLine())!
=null)
-9-
text.append(s+"
\n"
inOne.close();
inTwo.close();
提示"
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==itemCopy)
text.copy();
elseif(e.getSource()==itemCut)
text.cut();
elseif(e.getSource()==itemPaste)
text.paste();
elseif(e.getSource()==itemClear)
5(CalendarImage
File存放图像文件的引用imageFile
ImageImage
负责创建image对象Toolkittool
(2)方法见表9
方法名功能备注CalendarImage创建calendarImage对构造方法()象
负责设置imageFile对setImageFile象,根据imageFile创(File)建image
paintComponent负责绘制image
-10-
(Graphics)
(3)源代码见文件Calendar
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 课程设计 报告 实用 万年历 记事本
![提示](https://static.bdocx.com/images/bang_tan.gif)