搜档网
当前位置:搜档网 › 日历记事本范例

日历记事本范例

实验报告

1217119吴明俊计算机应用一班

一.系统的详细设计

主类CalendarPad

1成员变量

记事本NotePad

1成员变量

2方法

年Year 1.成员变量

2方法

月Month

1成员变量

2方法

二.关键代码

CalendarPad.java

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("Please input in the year of the input box check year (negative) BC, and press enter"),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||m onth==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);

}

}

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("TimesPomn",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);

}

}

}

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+"The log records in a day, want to see?";

int

ok=JOptionPane.showConfirmDialog(this,m,"ask",JOptionPane.YES_NO_OPTION,JOp tionPane.QUESTION_MESSAGE);

if(ok==JOptionPane.YES_NO_OPTION)

{

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+"Save the log?";

int

ok=JOptionPane.showConfirmDialog(this,m,"sak",JOptionPane.YES_NO_OPTION,JOp tionPane.QUESTION_MESSAGE);

if(ok==JOptionPane.YES_NO_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,"sak",JOptionPane.YES_NO_OPTION,JOp tionPane.QUESTION_MESSAGE);

if(ok==JOptionPane.YES_NO_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+"No log record";

JOptionPane.showMessageDialog(this,m,"tips",JOptionPane.WARNING_MESSAGE);

}

}

}

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()==明年)

{

try

{

year=year+1;

showYear.setText(""+year);

日历.setYear(year);

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

}

catch(NumberFormatException ee)

{

showYear.setText(""+year);

日历.setYear(year);

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

}

}

}

}

相关主题