日历记事本的源程序代码

 

主类 CalendarPad

CalendarPadJava

import java.util.Calendar;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.util.Hashtable;

public class CalendarPad extends JFrame implements MouseListener

{

   int year,month,day;

   Hashtable hashtable;             

   File file;                       

   JTextField showDay[];             

   JLabel title[];                   

   Calendar 日历;

   int 星期几

   NotePad notepad=null;             

   Month 负责改变月;

   Year  负责改变年;

   String 星期[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};

   JPanel leftPanel,rightPanel;    

   public  CalendarPad(int year,int month,int day)

   { 

     leftPanel=new JPanel();

     JPanel leftCenter=new JPanel();

     JPanel leftNorth=new JPanel();

     leftCenter.setLayout(new GridLayout(7,7));   

                                                  

     rightPanel=new JPanel();

     this.year=year;

     this.month=month;

     this.day=day;

     负责改变年=new Year(this);

     负责改变年.setYear(year);

     负责改变月=new Month(this);

     负责改变月.setMonth(month);

  

     title=new JLabel[7];                         

     showDay=new JTextField[42];                   

     for(int j=0;j<7;j++)                         

       {

         title[j]=new JLabel();

         title[j].setText(星期[j]);

         title[j].setBorder(BorderFactory.createRaisedBevelBorder());

         leftCenter.add(title[j]);

       } 

     title[0].setForeground(Color.red);

     title[6].setForeground(Color.blue);

 

     for(int i=0;i<42;i++)                        

       {

         showDay[i]=new JTextField();

         showDay[i].addMouseListener(this);

         showDay[i].setEditable(false);

         leftCenter.add(showDay[i]);

       }

         

     日历=Calendar.getInstance();

     Box box=Box.createHorizontalBox();          

     box.add(负责改变年);

     box.add(负责改变月);

     leftNorth.add(box);

     leftPanel.setLayout(new BorderLayout());

     leftPanel.add(leftNorth,BorderLayout.NORTH);

     leftPanel.add(leftCenter,BorderLayout.CENTER);

     leftPanel.add(new Label("请在年份输入框输入所查年份(负数表示公元前),并回车确定"),

                  BorderLayout.SOUTH) ;

     leftPanel.validate();

     Container con=getContentPane();

     JSplitPane split=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,

                                     leftPanel,rightPanel);

     

     con.add(split,BorderLayout.CENTER);

     con.validate();

    

     hashtable=new Hashtable();

     file=new File("日历记事本.txt");

      if(!file.exists())

      {

       try{

           FileOutputStream out=new FileOutputStream(file);

           ObjectOutputStream objectOut=new ObjectOutputStream(out);

           objectOut.writeObject(hashtable);

           objectOut.close();

           out.close();

          }

       catch(IOException e)

          {

          }

      } 

    

     notepad=new NotePad(this);                                      

     rightPanel.add(notepad);

     

     设置日历牌(year,month);

     addWindowListener(new WindowAdapter()

                    { public void windowClosing(WindowEvent e)

                       {

                         System.exit(0);

                       }

                    });

    setVisible(true);

    setBounds(100,50,524,285);

    validate();

   }

  public void 设置日历牌(int year,int month)

   {

     日历.set(year,month-1,1);              

     

     星期几=日历.get(Calendar.DAY_OF_WEEK)-1;

     if(month==1||month==2||month==3||month==5||month==7

                        ||month==8||month==10||month==12)

        {   排列号码(星期几,31);         

        }

     else if(month==4||month==6||month==9||month==11)

        {  排列号码(星期几,30);

        }

     else if(month==2)

        {   if((year%4==0&&year%100!=0)||(year%400==0))  

           {   排列号码(星期几,29);

           }

         else

           {   排列号码(星期几,28);

           }

       }

   } 

  public void 排列号码(int 星期几,int 月天数)

   {

      for(int i=星期几,n=1;i<星期几+月天数;i++)

             {   showDay[i].setText(""+n);

               if(n==day)

                 {   showDay[i].setForeground(Color.green); 

                     showDay[i].setFont(new Font("TimesRoman",Font.BOLD,20));

                 }

               else

                 {   showDay[i].setFont(new Font("TimesRoman",Font.BOLD,12));

                      showDay[i].setForeground(Color.black);

                 }

               if(i%7==6)

                 {   showDay[i].setForeground(Color.blue);  

                 }

               if(i%7==0)

                 {  showDay[i].setForeground(Color.red);  

                 }

               n++; 

             }

       for(int i=0;i<星期几;i++)

             {  showDay[i].setText("");

             }

       for(int i=星期几+月天数;i<42;i++)

             {   showDay[i].setText("");

             }

   }

 public int getYear()

   {   return year;

   } 

 public void setYear(int y)

   {   year=y;

     notepad.setYear(year);

   }

 public int getMonth()

   {  return month;

   }

 public void setMonth(int m)

   {  month=m;

      notepad.setMonth(month); 

   }

 public int getDay()

   {   return day;

   }

 public void setDay(int d)

   {   day=d;

       notepad.setDay(day);

   }

 public Hashtable getHashtable()

   {   return hashtable;

   }

 public File getFile()

   {   return file;

   }

 public void mousePressed(MouseEvent e)             

   {  JTextField source=(JTextField)e.getSource();

      try{

         day=Integer.parseInt(source.getText());

         notepad.setDay(day);

         notepad.设置信息条(year,month,day);

         notepad.设置文本区(null);

         notepad.获取日志内容(year,month,day);

        } 

      catch(Exception ee)

        {

        }

   }

 public void mouseClicked(MouseEvent e)

   {

   }

 public void mouseReleased(MouseEvent e)

   {

   }

 public void mouseEntered(MouseEvent e)

   {

   }

 public void mouseExited(MouseEvent e)

   {

   }

 public static void main(String args[])

   {   Calendar calendar=Calendar.getInstance();    

       int y=calendar.get(Calendar.YEAR);           

       int m=calendar.get(Calendar.MONTH)+1;        

       int d=calendar.get(Calendar.DAY_OF_MONTH);

       new CalendarPad(y,m,d);

   }

}  

 

记事本 NotePad

NotePad.java

import java.awt.*;

import java.awt.event.*;

import java.util.*;

import javax.swing.*;

import javax.swing.event.*;

import java.io.*;

 

public class NotePad extends JPanel implements ActionListener

{ JTextArea text;              

  JButton 保存日志,删除日志;

  Hashtable table;             

  JLabel 信息条;               

  int year,month,day;          

  File file;                   

  CalendarPad calendar;

  public  NotePad(CalendarPad calendar)

   {

     this.calendar=calendar;

     year=calendar.getYear();

     month=calendar.getMonth();

     day=calendar.getDay();;

     table=calendar.getHashtable();

     file=calendar.getFile();

     信息条=new JLabel(""+year+""+month+""+day+"",JLabel.CENTER);

     信息条.setFont(new Font("TimesRoman",Font.BOLD,16));

     信息条.setForeground(Color.blue);

     text=new JTextArea(10,10);

     保存日志=new JButton("保存日志") ;

     删除日志=new JButton("删除日志") ;

     保存日志.addActionListener(this);

     删除日志.addActionListener(this);

     setLayout(new BorderLayout());

     JPanel pSouth=new JPanel();       

     add(信息条,BorderLayout.NORTH);

     pSouth.add(保存日志);

     pSouth.add(删除日志);

     add(pSouth,BorderLayout.SOUTH);

     add(new JScrollPane(text),BorderLayout.CENTER);

   }

 public void actionPerformed(ActionEvent e)

   {

     if(e.getSource()==保存日志)

      {   保存日志(year,month,day);

      }

     else if(e.getSource()==删除日志)

      {  删除日志(year,month,day);

      }

   }

  public void setYear(int year)

  {   this.year=year;

  }

 public int getYear()

  {    return year;

  }

 public void setMonth(int month)

  {   this.month=month;

  } 

  public int getMonth()

  {   return month;

  } 

  public void setDay(int day)

  {   this.day=day;

  }

  public int getDay()

   {   return day;

   }

 public void 设置信息条(int year,int month,int day)

   {   信息条.setText(""+year+""+month+""+day+"");

   }

  public void 设置文本区(String s)

   {  text.setText(s);

   }

  public void 获取日志内容(int year,int month,int day)

   {   String key=""+year+""+month+""+day;

       try

             {

              FileInputStream   inOne=new FileInputStream(file);

              ObjectInputStream inTwo=new ObjectInputStream(inOne);

              table=(Hashtable)inTwo.readObject();         

              inOne.close();

              inTwo.close();

             }

       catch(Exception ee)

             {

             }

       if(table.containsKey(key))

          {  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((String)table.get(key));

                  }

                else

                  {   text.setText(""); 

                  }

          } 

       else

          {   text.setText("无记录");

          } 

   }

  public void 保存日志(int year,int month,int day)

   {    String 日志内容=text.getText();

        String key=""+year+""+month+""+day;

        String m=""+year+""+month+""+day+"保存日志吗?";

        int ok=JOptionPane.showConfirmDialog(this,m,"询问",JOptionPane.YES_NO_OPTION,

                                               JOptionPane.QUESTION_MESSAGE);

        if(ok==JOptionPane.YES_OPTION)

          {

           try

             {

              FileInputStream   inOne=new FileInputStream(file);

              ObjectInputStream inTwo=new ObjectInputStream(inOne);

              table=(Hashtable)inTwo.readObject();

              inOne.close();

              inTwo.close();

              table.put(key,日志内容);                                  

              FileOutputStream out=new FileOutputStream(file);

              ObjectOutputStream objectOut=new ObjectOutputStream(out);

              objectOut.writeObject(table);

              objectOut.close();

              out.close();

             }

           catch(Exception ee)

             {

             }

         }

   }

  public void 删除日志(int year,int month,int day)

   {   String key=""+year+""+month+""+day;

         if(table.containsKey(key))

          {    String m="删除"+year+""+month+""+day+"日的日志吗?";

               int ok=JOptionPane.showConfirmDialog(this,m,"询问",JOptionPane.YES_NO_OPTION,

                                               JOptionPane.QUESTION_MESSAGE);

              if(ok==JOptionPane.YES_OPTION)

              { 

              try

                {

                 FileInputStream   inOne=new FileInputStream(file);

                 ObjectInputStream inTwo=new ObjectInputStream(inOne);

                 table=(Hashtable)inTwo.readObject();

                 inOne.close();

                 inTwo.close();

                 table.remove(key);                                        

                 FileOutputStream out=new FileOutputStream(file);

                 ObjectOutputStream objectOut=new ObjectOutputStream(out);

                 objectOut.writeObject(table);

                 objectOut.close();

                 out.close();

                 text.setText(null);

                }

               catch(Exception ee)

                {

                }

              }

          }

        else

          {  String m=""+year+""+month+""+day+"无日志记录";

            JOptionPane.showMessageDialog(this,m,"提示",JOptionPane.WARNING_MESSAGE);

          }

   }

 

}

 

年 Year

Year.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

 

public class Year extends Box implements ActionListener

{  int year;                           

  JTextField showYear=null;           

  JButton 明年,去年;

  CalendarPad 日历;

  public Year(CalendarPad 日历)

  {  super(BoxLayout.X_AXIS);        

     showYear=new JTextField(4);

     showYear.setForeground(Color.blue);

     showYear.setFont(new Font("TimesRomn",Font.BOLD,14)); 

     this.日历=日历;

     year=日历.getYear();

     明年=new JButton("下年");

     去年=new JButton("上年");

     add(去年);

     add(showYear);

     add(明年);

     showYear.addActionListener(this);

     去年.addActionListener(this);

     明年.addActionListener(this);

  }

 public void setYear(int year)

  {  this.year=year;

     showYear.setText(""+year);

  }

 public int getYear()

  {  return year;

  } 

 public void actionPerformed(ActionEvent e)

  {  if(e.getSource()==去年)

      {   year=year-1;

         showYear.setText(""+year);

         日历.setYear(year);

         日历.设置日历牌(year,日历.getMonth());

      }

    else if(e.getSource()==明年)

      { year=year+1;

        showYear.setText(""+year);

        日历.setYear(year);

        日历.设置日历牌(year,日历.getMonth());

      }

    else if(e.getSource()==showYear)

      { try

            { year=Integer.parseInt(showYear.getText());

              showYear.setText(""+year);

              日历.setYear(year);

              日历.设置日历牌(year,日历.getMonth());

            }

         catch(NumberFormatException ee)

            { showYear.setText(""+year);

              日历.setYear(year);

              日历.设置日历牌(year,日历.getMonth());

            }

      }

  }   

}

 

月 Month:

Month.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Month extends Box implements ActionListener

{ int month;                           

  JTextField showMonth=null;           

  JButton 下月,上月;

  CalendarPad 日历;

  public Month(CalendarPad 日历)

  {  

     super(BoxLayout.X_AXIS);        

     this.日历=日历;

     showMonth=new JTextField(2);

     month=日历.getMonth();

     showMonth.setEditable(false);

     showMonth.setForeground(Color.blue);

     showMonth.setFont(new Font("TimesRomn",Font.BOLD,16)); 

     下月=new JButton("下月");

     上月=new JButton("上月");

     add(上月);

     add(showMonth);

     add(下月);

     上月.addActionListener(this);

     下月.addActionListener(this);

     showMonth.setText(""+month);

  }

 public void setMonth(int month)

  {  if(month<=12&&month>=1)

      {  this.month=month;

      }

    else

      {  this.month=1;

      }

    showMonth.setText(""+month);

  }

 public int getMonth()

  {   return month;

  } 

 public void actionPerformed(ActionEvent e)

  {  if(e.getSource()==上月)

      {  if(month>=2)

         {  month=month-1;

            日历.setMonth(month);

            日历.设置日历牌(日历.getYear(),month);

         }

        else if(month==1)

         {  month=12;

            日历.setMonth(month);

            日历.设置日历牌(日历.getYear(),month);

         }

       showMonth.setText(""+month);

      }

    else if(e.getSource()==下月)

      {  if(month<12)

          {  month=month+1;

            日历.setMonth(month);

            日历.设置日历牌(日历.getYear(),month);

          }

        else if(month==12)

          {  month=1;

            日历.setMonth(month);

            日历.设置日历牌(日历.getYear(),month);

          }

        showMonth.setText(""+month);

      }

  }   

}

posted on 2015-07-08 23:56  杨大侠  阅读(481)  评论(0编辑  收藏  举报