• 源代码


    日历记事本的源程序代码

    主类 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);

          }

      }   

    }

  • 相关阅读:
    Asp.net如何连接SQL Server2000数据库
    是男人,都可以看看这个
    体验Flash MX(8):控制时钟Timer
    好代码
    sql 大数据量插入优化
    Xcode 真机程序发布测试
    Xcode 真机程序发布测试
    用git备份代码
    sql 大数据量插入优化
    UIView学习笔记
  • 原文地址:https://www.cnblogs.com/yangdaxia/p/4631755.html
Copyright © 2020-2023  润新知