Java日历记事本课程设计报告_第1页
Java日历记事本课程设计报告_第2页
Java日历记事本课程设计报告_第3页
Java日历记事本课程设计报告_第4页
Java日历记事本课程设计报告_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 Java日历记事本课程设计报告在设计日历记事本时,需要编写6个JAVA源文件:CalendarWindow.java、CalendarPad.java、NotePad.java、CalendarImage.java、Clock.java和CalendarMesssage.java效果图如下. CalendarWindow类import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;import java.io.*;public class CalendarWindow extends JF

2、rame implements ActionListener,MouseListener,FocusListenerint year,month,day;CalendarMessage calendarMessage;CalendarPad calendarPad;NotePad notePad;JTextField showYear,showMonth;JTextField showDay;CalendarImage calendarImage;String picturename;Clock clock;JButton nextYear,previousYear,nextMonth,pre

3、viousMonth;JButton saveDailyRecord,deleteDailyRecord,readDailyRecord;JButton getPicture;File dir;Color backColor=Color.white ;public CalendarWindow()dir=new File(./dailyRecord);dir.mkdir();showDay=new JTextField42;for(int i=0;ishowDay.length;i+)showDayi=new JTextField();showDayi.setBackground(backCo

4、lor);showDayi.setLayout(new GridLayout(3,3);showDayi.addMouseListener(this);showDayi.addFocusListener(this);calendarMessage=new CalendarMessage();calendarPad=new CalendarPad();notePad=new NotePad();Calendar calendar=Calendar.getInstance();calendar.setTime(new Date();year=calendar.get(Calendar.YEAR);

5、month=calendar.get(Calendar.MONTH)+1;day=calendar.get(Calendar.DAY_OF_MONTH);calendarMessage.setYear(year);calendarMessage.setMonth(month);calendarMessage.setDay(day);calendarPad.setCalendarMessage(calendarMessage);calendarPad.setShowDayTextField(showDay);notePad.setShowMessage(year,month,day);calen

6、darPad.showMonthCalendar();doMark();calendarImage=new CalendarImage();calendarImage.setImageFile(new File(flower.jpg);clock=new Clock();JSplitPane splitV1=new JSplitPane(JSplitPane.VERTICAL_SPLIT,calendarPad,calendarImage);JSplitPane splitV2=new JSplitPane(JSplitPane.VERTICAL_SPLIT,notePad,clock);JS

7、plitPane splitH=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,splitV1,splitV2);add(splitH,BorderLayout.CENTER);showYear=new JTextField(+year,6);showYear.setFont(new Font(TimesRoman,Font.BOLD,12);showYear.setHorizontalAlignment(JTextField.CENTER);showMonth=new JTextField(+month,4);showMonth.setFont(new

8、Font(TimesRoman,Font.BOLD,12);showMonth.setHorizontalAlignment(JTextField.CENTER);nextYear=new JButton(下年);previousYear=new JButton(上年);nextMonth=new JButton(下月);previousMonth=new JButton(上月);nextYear.addActionListener(this);previousYear.addActionListener(this);nextMonth.addActionListener(this);prev

9、iousMonth.addActionListener(this);JPanel north=new JPanel();north.add(previousYear);north.add(showYear);north.add(nextYear);north.add(previousMonth);north.add(showMonth);north.add(nextMonth);add(north,BorderLayout.NORTH);saveDailyRecord=new JButton(保存日志);deleteDailyRecord=new JButton(删除日志);readDaily

10、Record=new JButton(读取日志);saveDailyRecord.addActionListener(this);deleteDailyRecord.addActionListener(this);readDailyRecord.addActionListener(this);JPanel pSouth=new JPanel();pSouth.add(saveDailyRecord);pSouth.add(deleteDailyRecord);pSouth.add(readDailyRecord);add(pSouth,BorderLayout.SOUTH);getPictur

11、e=new JButton(选择日历图像);getPicture.addActionListener(this);pSouth.add(getPicture);add(pSouth,BorderLayout.SOUTH);setVisible(true);setBounds(60,60,660,480);validate();setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);public void actionPerformed(ActionEvent e)if(e.getSource()=nextYear)year+;showYear.setTex

12、t(+year);calendarMessage.setYear(year);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();else if(e.getSource()=previousYear)year-;showYear.setText(+year);calendarMessage.setYear(year);calendarPad.setCalendarMessage(calenda

13、rMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();else if(e.getSource()=nextMonth)month+;if(month1) month=12;showMonth.setText(+month);calendarMessage.setMonth(month);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setSh

14、owMessage(year,month,day);doMark();else if(e.getSource()=previousMonth)month-;if(month1) month=12;showMonth.setText(+month);calendarMessage.setMonth(month);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();else if(e.getSou

15、rce()=showYear)String s=showYear.getText().trim();char a=s.toCharArray();boolean boo=false;for(int i=0;ia.length;i+)if(!(Character.isDigit(ai)boo=true;if(boo=true)JOptionPane.showMessageDialog(this, 您输入了非法年份,警告,JOptionPane.WARNING_MESSAGE);else if(boo=false)year=Integer.parseInt(s);showYear.setText(

16、+year);calendarMessage.setYear(year);calendarPad.setCalendarMessage(calendarMessage);calendarPad.showMonthCalendar();notePad.setShowMessage(year,month,day);doMark();else if(e.getSource()=saveDailyRecord)notePad.save(dir,year,month,day);doMark();else if(e.getSource()=deleteDailyRecord)notePad.delete(

17、dir,year,month,day);doMark();else if(e.getSource()=readDailyRecord)notePad.read(dir,year,month,day);else if (e.getSource() =getPicture ) FileDialog fd=new FileDialog(this,打开文件对话框); fd.setVisible(true); String fileopen = null, filename = null; fileopen = fd.getDirectory(); filename = fd.getFile(); ca

18、lendarImage.setImageFile(new File(fileopen,filename);public void mousePressed(MouseEvent e)JTextField text=(JTextField)e.getSource();String str=text.getText().trim();try day=Integer.parseInt(str);catch(NumberFormatException exp)calendarMessage.setDay(day);notePad.setShowMessage(year,month,day);publi

19、c void mouseReleased(MouseEvent e)public void mouseEntered(MouseEvent e)public void mouseExited(MouseEvent e)public void mouseClicked(MouseEvent e)public void focusGained(FocusEvent e)Component com=(Component)e.getSource();com.setBackground(Color.pink);public void focusLost(FocusEvent e)Component co

20、m=(Component)e.getSource();com.setBackground(backColor);public void doMark()for(int i=0;ishowDay.length;i+)showDayi.removeAll();String str=showDayi.getText().trim();tryint n=Integer.parseInt(str);if(isHaveDailyRecord(n)=true)JLabel mess=new JLabel(有);mess.setFont(new Font(TimesRoman,Font.PLAIN,11);m

21、ess.setForeground(Color.blue);showDayi.add(mess);catch(Exception exp)calendarPad.repaint();calendarPad.validate();public boolean isHaveDailyRecord(int n)String key=+year+month+n;String dayFile=dir.list();boolean boo=false;for(int k=0;kdayFile.length;k+)if(dayFilek.equals(key+.txt)boo=true;break;retu

22、rn boo;public String getPicture_address() String address = null;try InputStream outOne = new FileInputStream(picture_address.txt);ObjectInputStream outTwo = new ObjectInputStream(outOne);try address = (String) outTwo.readObject(); catch (Exception ex) outTwo.close(); catch (IOException eee) if (addr

23、ess != null) return address; else return picture.jpg;public void actionPerformed1(ActionEvent e) if (e.getActionCommand().equals(更改图片背景) FileDialog dia = new FileDialog(this, 选择图片, FileDialog.LOAD);dia.setModal(true);dia.setVisible(true);if (dia.getDirectory() != null) & (dia.getFile() != null) try

24、FileOutputStream inOne = new FileOutputStream(picture_address.txt);ObjectOutputStream inTwo = new ObjectOutputStream(inOne);inTwo.writeObject(dia.getDirectory() + dia.getFile();inTwo.close(); catch (IOException ee) String picturename = getPicture_address();calendarImage.setImageFile(new File(picture

25、name);public static void main(String args)new CalendarWindow();CalendarPad类import javax.swing.*;import java.awt .*;import java.awt.event.*;import java.util.*;import javax.swing.JPanel;public class CalendarPad extends JPanelint year,month,day;CalendarMessage calendarMessage;JTextField showDay;JLabel

26、title;String 星期=SUN 日,MON 一,TUE 二,WED 三,THU 四,FRI 四,SAT 六;JPanel north,center;public CalendarPad()setLayout(new BorderLayout();north=new JPanel();north.setLayout(new GridLayout(1,7);center=new JPanel();center.setLayout(new GridLayout(6,7);add(center ,BorderLayout.CENTER );add(north,BorderLayout.NORT

27、H );title=new JLabel7;for(int j=0;j7;j+)titlej=new JLabel();titlej.setFont(new Font(TimesRoman,Font.BOLD ,12);titlej.setText(星期j);titlej.setHorizontalAlignment(JLabel.CENTER);titlej.setBorder(BorderFactory.createRaisedBevelBorder();north.add(titlej);title0.setForeground(Color.red);title6.setForegrou

28、nd(Color.blue);public void setShowDayTextField(JTextFieldtext)showDay=text;for(int i=0;ishowDay.length;i+)showDayi.setFont(new Font(TimesRoman,Font.BOLD ,15);showDayi.setHorizontalAlignment(JTextField.CENTER);showDayi.setEditable(false);center.add(showDayi); public void setCalendarMessage (CalendarM

29、essage calendarMessage)this.calendarMessage=calendarMessage;public void showMonthCalendar()String a=calendarMessage.getMonthCalendar();for(int i=0;i42;i+)showDayi.setText(ai);validate();CalendarMesssage类import java.util.Calendar;public class CalendarMessage int year=-1,month=-1,day=-1;public int get

30、Year()return year;public void setMonth(int month)if(month=1)this.month=month;elsethis.month =1;public int getMonth()return month;public void setDay(int day)this.day =day;public int getDay()return day ;public String getMonthCalendar()String day=new String42;Calendar rili =Calendar.getInstance();rili.

31、set(year, month-1,1);int 星期几=rili.get(Calendar.DAY_OF_WEEK )-1;int dayAmount=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;elsedayAmount=28;for(int i=0;i星期几;i+

32、)dayi=;for(int i=星期几,n=1;i星期几+dayAmount;i+)dayi=String.valueOf(n);n+;for(int i=星期几+dayAmount;i42;i+)dayi=;return day; public void setYear(int year) this.year = year;NotePad类import java.awt.*;import javax.swing.*;import javax.swing.border.Border;import javax.swing.event.ListSelectionEvent;import java

33、x.swing.event.ListSelectionListener;import java.io.*;import java.awt.event.*;public class NotePad extends JPanel implements ActionListener JTextArea text;JTextField showMessage;JPopupMenu menu;JMenuItem itemCopy, itemCut, itemPaste, itemClear, btn;public NotePad() showMessage = new JTextField();show

34、Message.setHorizontalAlignment(JTextField.CENTER);showMessage.setFont(new Font(TimesRoman, Font.BOLD, 16);showMessage.setForeground(Color.blue);showMessage.setBackground(Color.pink);showMessage.setBorder(BorderFactory.createRaisedBevelBorder();showMessage.setEditable(false);menu = new JPopupMenu();i

35、temCopy = new JMenuItem(复制);itemCut = new JMenuItem(剪切);itemPaste = new JMenuItem(粘贴);itemClear = new JMenuItem(清空);btn = new JMenuItem(字体);itemCopy.addActionListener(this);itemCut.addActionListener(this);itemPaste.addActionListener(this);itemClear.addActionListener(this);btn.addActionListener(this)

36、;menu.add(itemCopy);menu.add(itemCut);menu.add(itemPaste);menu.add(itemClear);menu.add(btn);text = new JTextArea(10, 10);text.addMouseListener(new MouseAdapter() public void mousePressed(MouseEvent e) if (e.getModifiers() = InputEvent.BUTTON3_MASK)menu.show(text, e.getX(), e.getY(););setLayout(new B

37、orderLayout();add(showMessage, BorderLayout.NORTH);add(new JScrollPane(text), BorderLayout.CENTER);public void setShowMessage(int year, int month, int day) showMessage.setText( + year + 年 + month + 月 + day + 日);showMessage.setForeground(Color.blue);showMessage.setFont(new Font(宋体, Font.BOLD, 15);pub

38、lic void save(File dir, int year, int month, int day) String dailyContent = text.getText();String fileName = + year + + month + + day + .txt;String key = + year + + month + + day;String dayFile = dir.list();boolean boo = false;for (int k = 0; k dayFile.length; k+) if (dayFilek.startsWith(key) boo =

39、true;break;if (boo) String m = + year + 年 + month + 月 + day+ 已有日志,将新的内容添加到日志吗?;int ok = JOptionPane.showConfirmDialog(this, m, ,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);if (ok = JOptionPane.YES_OPTION) try File f = new File(dir, fileName);RandomAccessFile out = new RandomAccessFile(f

40、, rw);long fileEnd = out.length();byte bb = dailyContent.getBytes();out.seek(fileEnd);out.write(bb);out.close(); catch (IOException exp) else String m = + year + 年 + month + 月 + day + 还没有日志,保存日志吗?;int ok = JOptionPane.showConfirmDialog(this, m, 询问,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESS

41、AGE);if (ok = JOptionPane.YES_OPTION) try File f = new File(dir, fileName);RandomAccessFile out = new RandomAccessFile(f, rw);long fileEnd = out.length();byte bb = dailyContent.getBytes();out.seek(fileEnd);out.write(bb);out.close(); catch (IOException exp) public void delete(File dir, int year, int

42、month, int day) String key = + year + + month + + day;String dayFile = dir.list();boolean boo = false;for (int k = 0; k dayFile.length; k+) if (dayFilek.startsWith(key) boo = true;break;if (boo) String m = 删除 + year + 年 + month + 月 + day + 日的日志吗?;int ok = JOptionPane.showConfirmDialog(this, m, 询问,JO

43、ptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);if (ok = JOptionPane.YES_OPTION) String fileName = + year + + month + + day + .txt;File deleteFile = new File(dir, fileName);deleteFile.delete();else String m = + year + + month + + day + ;JOptionPane.showMessageDialog(this, m, 提示,JOptionPane.WA

44、RNING_MESSAGE);public void read(File dir, int year, int month, int day) String fileName = + year + + month + + day + .txt;String key = + year + + month + + day;String dayFile = dir.list();boolean boo = false;for (int k = 0; k dayFile.length; k+) if (dayFilek.startsWith(key) boo = true;break;if (boo)

45、 String m = + year + + month + + day + ;int ok = JOptionPane.showConfirmDialog(this, m, 询问,JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);if (ok = JOptionPane.YES_OPTION) text.setText(null);try File f = new File(dir, fileName);FileReader inOne = new FileReader(f);BufferedReader inTwo = new

46、 BufferedReader(inOne);String s = null;while (s = inTwo.readLine() != null)text.append(s + n);inOne.close();inTwo.close(); catch (IOException exp) else String m = + year + + month + + day + ;JOptionPane.showMessageDialog(this, m, 提示,JOptionPane.WARNING_MESSAGE);public void actionPerformed(ActionEven

47、t e) if (e.getSource() = itemCopy)text.copy();else if (e.getSource() = itemCut)text.cut();else if (e.getSource() = itemPaste)text.paste();else if (e.getSource() = itemClear)text.setText(null);if (e.getSource() = btn) JFontDialog nFD = new JFontDialog(选择字体);nFD.setModal(true);nFD.setVisible(true);tex

48、t.setFont(nFD.myFont);class JFontDialog extends JDialog private static final long serialVersionUID = 1L;JList fontpolics, fontstyle, fontsize;JTextField fontpolict, fontstylet, fontsizet;String example;JLabel FontResolvent;JButton buttonok, buttoncancel;Font myFont;public JFontDialog(String title) Container container = getContentPane();container.setLayout(new BorderLayout();JPanel panel = new JPanel();panel.setLayout(new GridLayout(2, 1);JPanel FontSet, FontView;FontSet = new JPanel(new GridLayout(1, 4);FontView = new JPan

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论