Java课程设计+文档+源代码(万年历+闹钟+记事本)

合集下载

JAVA课程设计 万年历 源代码

JAVA课程设计 万年历 源代码

测试用例设计:根据 需求文档和功能描述, 设计出能够覆盖所有 功能的测试用例
测试工具:使用JUnit 等测试框架进行单元 测试,使用Selenium 等工具进行UI测试
测试结果分析:根 据测试结果,分析 代码存在的问题, 并进行修改和优化
集成测试:验证各个模块之间的接口是否正确,数据传输是否正常 性能测试:测试系统的响应时间、吞吐量、资源利用率等性能指标
提醒功能:用户可以设置提醒功能,在节日或假期到来之前,系统会自动提醒用户。
删除事件:用户可以删除不 再需要的事件
编辑事件:用户可以对已添加 的事件进行编辑,如修改事件 名称、时间等
添加事件:用户可以在万年历 中添加新的事件,如生日、纪 念日等
查询事件:用户可以查询特定 日期或时间段内的事件,如查
界面显示:万年历界面将显示年、 月、日、星期等信息,用户可以通 过点击相应的按钮来切换日期。
添加标题
添加标题
添加标题
添加标题
系统响应:当用户输入日期后,系统 将根据输入的日期显示相应的万年历 信息,包括年、月、日、星期等信息。
用户操作:用户可以通过点击相应 的按钮来切换日期,系统将根据用 户的操作显示相应的万年历信息。
添加标题
界面设计:简洁明了,易于阅读
添加标题
添加标题
交互性:用户可以选择查看不同日 期的日历信息
功能描述:在万年历中,用户可以选择标注节日和假期,以便于查看和提醒。
节日标注:用户可以在万年历中设置自己喜欢的节日,如春节、中秋节等,系统会自动 标注这些节日。
假期标注:用户可以在万年历中设置自己的假期,如年假、病假等,系统会自动标注这 些假期。
,a click to unlimited possibilities

Java日历记事本课程设计报告毕业用资料

Java日历记事本课程设计报告毕业用资料

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 JFrame implements ActionListener,MouseListener,FocusListener{int year,month,day;CalendarMessage calendarMessage;CalendarPad calendarPad;NotePad notePad;JTextField showYear,showMonth;JTextField[]showDay;CalendarImage calendarImage;String picturename;Clock clock;JButton nextYear,previousYear,nextMonth,previousMonth;JButtonsaveDailyRecord,deleteDailyRecord,readDailyRecord;JButton getPicture;File dir;Color backColor=Color.white;public CalendarWindow(){dir=new File("./dailyRecord");dir.mkdir();showDay=new JTextField[42];for(int i=0;i<showDay.length;i++){showDay[i]=new JTextField();showDay[i].setBackground(backColor);showDay[i].setLayout(new GridLayout(3,3));showDay[i].addMouseListener(this);showDay[i].addFocusListener(this);}calendarMessage=new CalendarMessage();calendarPad=new CalendarPad();notePad=new NotePad();Calendar calendar=Calendar.getInstance();calendar.setTime(new Date());year=calendar.get(Calendar.YEAR);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);calendarPad.showMonthCalendar();doMark();calendarImage=new CalendarImage();calendarImage.setImageFile(new File("flower.jpg"));clock=new Clock();JSplitPane splitV1=new JSplitPane(JSplitPane.VERTICAL_SPLIT,calendarPad,calendarIm age);JSplitPane splitV2=new JSplitPane(JSplitPane.VERTICAL_SPLIT,notePad,clock);JSplitPane splitH=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,splitV1,splitV2);add(splitH,BorderLayout.CENTER);showYear=new JTextField(""+year,6);showYear.setFont(newFont("TimesRoman",Font.BOLD,12));showYear.setHorizontalAlignment(JTextField.CENTER);showMonth=new JTextField(""+month,4);。

JAVA课程设计 闹钟的设计与实现项目报告 附源代码

JAVA课程设计 闹钟的设计与实现项目报告 附源代码

Java 设计报告书课程名称:JAVA语言程序设计设计题目:闹钟的设计与实现院系:计算机科学与信息工程系学生姓名:学号:专业班级:指导教师:许研2010 年12 月28 日目录一、题目描述 (1)二、设计思路 (1)三、运行结果 (5)四、源代码 (6)五、总结 (10)六、参考文献 (10)闹钟的设计与实现一、题目描述:结合JAVA图形界面的知识设计一个闹钟二、设计思路1、设计要求:编写闹钟钟程序,要求画出时钟面板,动态的显示当前时间,可设定或解除闹钟时间,并提供闹钟服务相应的文字提示功能与可以自己选择闹钟提示声音提示功能,并在闹钟设定的输入框中有简单的排错功能。

2、算法基本描述:本程序先是在框架中新建了一个容器,然后用GridLayout类对面板进行划分,程序引入java.util.Date来显示当前时间,并用一个永真循环,来对当前时间显示的更新,引入java.io.File来实现对文件的读写操作,程序设计了一个选择按钮,用来选择文件,并且声明只能选择,WAU、MID的文件,引入用java.applet.Applet 来播放音乐文件,用getText()函数获取输入的闹钟设定时间,并永真循环和当前的时间进行对比,若相等则播放音乐,若不相等则显示离目标设定时间的差距。

3、设计思想与内容1、画出类的UML简图Clock类:Clock类中的变量ri, shi, fen, miao, dangqian, guanji: JLabe lqueding, dakai: JButtonmusic, RI, SHI, FEN, MIAO: JTextFieldh = 0, f = 0, m = 0, r = 0 :intFo, foo: booleansoumd1: public AudioClipClock类中的函数public clock()public static void main(String agrs[])public void run()2、各方法功能描述列表Clock类方法功能Main()执行main函数Clock()Clock类的构造函数,用于对时钟界面的初始化Run()用于对时钟的动态显示的执行,并判断是否设定了闹钟时间,若当前时间与设定的时间相等则播放选定的音乐3、主要模块算法描述(1)当前动态时间的显示的设计与实现。

java万年历源代码

java万年历源代码

java万年历源代码第一个类:chaxun.javapackage wannianli;import java.util.*;public class chaxun {public static void main(String[] args) {Scanner input =new Scanner(System.in);String answer="y";for(;answer.equals("y");){week cn=new week();cn.weekDay();//调用方法System.out.print("\是否继续?");answer=input.next();}}}第二个类:tianshu.javapackage wannianli;import java.util.*;public class tianshu {int totalDay;//总共的天数int yueTian;//每月的天数public void jsts(){int days=0;//输入月份到当年的天数System.out.println("*************************************欢迎使用万年历*************************************");Scanner input=new Scanner(System.in);System.out.print("请输入年份:");//从键盘输入年份int year=input.nextInt();System.out.print("请输入月份:");//从键盘输入月份int yue=input.nextInt();/**判断每月的天数*/for(int index=1;index<=yue;index++){if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==1 2){//满足闰年的条件yueTian=31;}elseif(yue==2&&((year%4==0)&&(!(year%100==0))||(year%400== 0))){yueTian=29;}elseif(yue==2&&(!((year%4==0)&&(!(year%100==0))||(year%400= =0)))){yueTian=28;}else if(yue==4||yue==6||yue==9||yue==11){yueTian=30;}else{System.out.print("输入的月份不正确");}if(index<=yue){days=days+yueTian;}}/**判断是否是闰年*/for(int i=100;i<year;i++){< bdsfid="116" p=""></year;i++){<>if ((year%4==0)&&(!(year%100==0))||(year%400==0)){//满足闰年的条件totalDay=totalDay+366;}else{totalDay=totalDay+365;}}totalDay=totalDay+days;//System.out.println(totalDay+"天");//return totalDay+yueTian;}}第三个类:week.jvapackage wannianli;public class week {public void weekDay() {int monDay;//星期几tianshu cn=new tianshu();cn.jsts();int week=1+cn.totalDay%7;//System.out.println(""+week);if (week==7){// 求当月第一天monDay=0;// 周日}else{monDay=week;}/* 输出日历*/System.out.println("星期日\星期一\星期二\星期三\星期四\星期五\星期六");for(int nullNo=0;nullNo<monday;nullno++){< bdsfid="145"p=""></monday;nullno++){<>System.out.print("\");// 输出空格}for(int i=1;i<=cn.yueTian;i++){System.out.print(i+"\");//输出每月的号数if((cn.totalDay + i - 1) % 7 == 5){// 如果当天为周六,输出换行System.out.println();}}} }。

java课程设计基于java的万年历设计与实现(附源代码)贯

java课程设计基于java的万年历设计与实现(附源代码)贯

Java课程设计报告课程设计题目:万年历指导老师:**********学生姓名:*********专业:**********学号:*******Java课程设计-万年历1、课程设计目的:这学期我们学习了Java语言,Java语言是面向对象的开发方法是当今世界最流行的开发方法,是当今流行的网络编程语言。

它具有面向对象、跨平台、分布应用等特点。

它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。

很多程序开发人员得第一选择。

为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。

让学生自己动手动脑,将书本上得知识运用到实践当中去,使知识能更好得融会贯通。

为了达到这个目的,我们需要自己动手做一个Java的课程设计,在这个课程设计里我们需要根据我们手中现有得软件与知识基础,独立得将它完成,只有这样,我们才能把理论变成实践,将知识真正得做到学以致用。

这次课程设计我主要研究了利用已学的Java知识编辑一个电子万年历。

通过此次课程设计,来巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。

并通过自己动手,自主得学习,对Java这门课程有更深得了解与认识。

2、需求分析:2.1、本程序要求:1、使用图形用户界面;2、本程序能够实现日期与星期查询,同时显示此时的时间。

2.2、功能设计:本程序要构建万年历程序,其功能如下:(1)通过窗口形式运行,实现界面功能;(2)以月历的形式来显示日期与星期;(3)为用户提供年份与月份的下拉形式菜选择年份与月份;(4)同时显示查看时的时刻。

3、课程设计的基本算法public class wnl extends JFrame implements ActionListener,ItemListener{Date date = new Date();private GregorianCalendar gregorianCalendar = new GregorianCalendar();//定义中英文字符数组存储星期信息,用于转换显示private String[] stringWeekEn = new String[] { "SUN", "MON", "TUE", "WED","THU", "FRI", "SAT" };private String[] stringWeekCn = new String[] { "星期日", "星期一", "星期二", "星期三","星期四", "星期五", "星期六" };//定义存储月份的信息数组,用于转换显示方式private String[] stringMonthEn = new String[] { "Jan", "Feb", "Mar", "Apr","May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" };private String[] stringMonthCn = {"1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"};private String[] sysNowTime = new String[6];//sysNowTime 用于存储系统时间的变量private String[] sysRunTime = new String[6];private JLabel []labelWeek = new JLabel[7];private JLabel []labelDay = new JLabel[42];private JLabel labelTime = new JLabel();private JPanel panel1 = new JPanel();private JPanel panel2 = new JPanel();private JPanel panel3 = new JPanel();private JComboBox combo1 = new JComboBox();private JComboBox combo2 = new JComboBox();private JButton buttonToday = new JButton();private Border border = BorderFactory.createRaisedBevelBorder(); private Border border1 = BorderFactory.createLineBorder(Color.cyan,3); public wnl (String title) {super(title);for (int y = 1900; y < 2200; y++) {combo1.addItem(" "+ new Integer(y).toString()+"年");}for (int m = 0;m<12;m++){combo2.addItem(" "+stringMonthCn[m]);}buttonToday.setText("现在时刻");setLayout(new FlowLayout());add(panel1);add(panel2);add(panel3);panel1.setLayout(new GridLayout(2,3,10,2));panel1.add(combo1);combo1.addItemListener(this);panel1.add(combo2);combo2.addItemListener(this);panel1.add(buttonToday);// buttonToday.addActionListener(this);labelTime.setFont(new Font("宋体",Font.PLAIN,16));labelTime.setForeground(Color.red);panel1.add(labelTime);Timer time = new Timer(1000,new TimerListener());time.addActionListener(new TimerListener());//time.setRepeats(true);time.start();//labelTime.addAncestorListener(new TimerListener());panel2.setLayout(new GridLayout(7,7,10,10));panel2.setBackground(Color.white);for(int i=0;i<7;i++){labelWeek[i] = new JLabel();labelWeek[i].setHorizontalAlignment(0);if(i==0||i==6){labelWeek[i].setBackground(Color.blue);labelWeek[i].setForeground(Color.RED);labelWeek[i].setFont(new Font("黑体",Font.BOLD,14));}else{labelWeek[i].setForeground(Color.BLACK);labelWeek[i].setFont(new Font("新宋体",Font.PLAIN,14));}labelWeek[i].setText(stringWeekCn[i]);panel2.add(labelWeek[i]);}for(int i= 0;i<42;i++){labelDay[i] = new JLabel();labelDay[i].setHorizontalAlignment(0);labelDay[i].setText("");panel2.add(labelDay[i]);}addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});setSize(300,300);setBounds(250, 200, 400, 360);setVisible(true);setResizable(false);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);getSysDate();setNowDate();}public void actionPerformed(ActionEvent ae){if(ae.getSource()==buttonToday){setNowDate();}}public void itemStateChanged(ItemEvent aa){setChangeDate();}public int turnWeek(String week){int i;for(i=0;i<7;i++)if(week.equalsIgnoreCase(stringWeekEn[i]))break;return i;}public int turnMonth(String month){/***int turnMonth(String month)*@month 系统日期中的月,诸如Jan\Feb*@return int*返回一个整数值,用于寻找stringMonthCn[]数组中对应的中文月份*/int i;for(i=0;i<12;i++)if(month.equalsIgnoreCase(stringMonthEn[i]))break;return i;}/***setNowDate()*设置当前系统日期*/public void setNowDate(){setSysDate(getNowYear(),getNowMonth());getSysRunDate();setDateNull();combo1.setSelectedIndex(getShowYear() - 1900);combo2.setSelectedIndex(getShowMonth());setDays(getMonthDays(getNowYear(),getNowMonth()),getInitWeek(sysRunTime[0]),getNowDa y());labelTime.setText(sysNowTime[3]);labelTime.setHorizontalAlignment(0);}/**Integer getShowYear()*获取组合框中应该显示的年份*/public void setSysDate(int year,int month){gregorianCalendar.set(year,month,1);}public void setDateNull(){for(int i=0;i<42;i++){labelDay[i].setText(" ");}}public void setChangeDate(){setSysDate(getComboYear(),getComboMonth());getSysRunDate();setDateNull();setDays(getMonthDays(getComboYear()+1,getComboMonth()+1),getInitWeek(sysRunTime[0]),-1);/***返回所选年月的天数,因为数组中的数值从0开始,所以各月必须加1.*而2月,经过是否为闰年判断,选择返回28或29天.*其余月份为大月,返回31天.**/}public int getMonthDays(int year, int month) {switch (month) {case 4:case 6:case 9:case 11:return 30;//小月返回30天case 2:if (gregorianCalendar.isLeapYear(year)) {//isLeapYear(year)确定当前纪元中的指定年份是否为闰年。

《Java》课程设计》记事本

《Java》课程设计》记事本

《Java课程设计》记事本课程设计报告书目录一、设计课题二、设计目的三、操作环境四、设计场所(机房号、机器号或自己机器)五、设计过程(设计内容及主要程序模块)六、本次设计中用到的课程知识点(列出主要知识点)七、设计过程中遇到的问题及解决办法八、程序清单五、设计过程(设计内容及主要模块,不少于3000字)1.设计要求1)界面设计2)功能实现(1)文件菜单:新建、打开、保存、另存为、退出等。

(2)其中新建菜单项可以新建一个记事本程序;打开菜单项可以打开一个用户指定的文本文件,并将其内容显示在记事本的文本区域;保存和另存为菜单项可分别实现文件的保存和另存为3)编辑菜单:复制、剪切和粘贴等4)帮助菜单:软件版本信5)右键弹出快捷菜单2.总体设计1)功能模块图:图一功能模块图2)功能描述1、打开记事本。

首先是标准型的记事本,拥有文件、编辑。

格式和帮助。

如图1所示:图1标准型记事本界面2、在标准型的记事本界面中,进行的新建一个本件名字叫新记事本。

如图2记事本文件帮助新建打开保存另存为退出复制剪切粘贴编辑关于记事本右键快捷格式字体颜色图2新建记事本功能3、用打开文件打开刚刚新建的新记事本。

如图三所示。

图3—打开文件4、点击退出即可退出,如图4所示:图4—退出记事本5、点击帮助可以看到有关记事本的相关信息,其中有作者名、版本、许可条款、隐私声明等必要信息。

如图5所示:图5—帮助相关信息6、右键可实现复制、粘贴、剪切、清除等常用功能,方便用户可以快捷方便的使用记事本。

如图6所示:图6—右键功能7、编辑也可实现制、粘贴、剪切、清除等常用功能,方便用户选择自己适合的方式,自由选择方便的快捷方式使用。

如图7:图7—编辑八、程序清单package test;import java.io.File;import java.io.*;import java.awt.event.*;import java.awt.Toolkit;import java.awt.*;import javax.swing.*;import javax.swing.filechooser.*;public class Notebook extends JFrame implements ActionListener,ItemListener{ //组件创建JButton b_save,b_close; //按钮JTextArea textArea; //文本框File tempFile; //文件JPanel jp; //面板JMenu file,edit,style,help; //菜单JMenuItemf_new,f_open,f_save,f_close,f_saveas,e_copy, e_paste,e_cut,e_clear,e_selectAll,e_find,e_rep lace,s_font,s_color,h_editor,h_help; //菜单条JMenuBar jmb;JScrollPane jsp; //滚动面板JPopupMenu popUpMenu = new JPopupMenu(); //右键弹出式菜单JLabel stateBar;//标签JLabel jl,jj;JFileChooser jfc = new JFileChooser(); //文件选择JMenuItemje_copy,je_paste,je_cut,je_clear,je_selectAll,je _find,je_replace; //弹出式菜单条public Notebook(){jfc.addChoosableFileFilter(new FileNameExtensionFilter("文本文件(*.txt)","txt"));jmb = new JMenuBar();textArea = new JTextArea();jsp = new JScrollPane(textArea);file = new JMenu("文件");edit = new JMenu("编辑");style = new JMenu("格式");help = new JMenu("帮助");je_copy = new JMenuItem("复制(C) ");je_paste = new JMenuItem("粘贴(P) ");je_cut = new JMenuItem("剪切(X) ");je_clear = new JMenuItem("清除(D) ");je_selectAll = new JMenuItem("全选(A) ");je_find = new JMenuItem("查找(F) ");je_replace = new JMenuItem("替换(R) ");je_copy.addActionListener(this); //给弹窗式的各组件添加监听器je_paste.addActionListener(this);je_cut.addActionListener(this);je_clear.addActionListener(this);je_selectAll.addActionListener(this);je_find.addActionListener(this);je_replace.addActionListener(this);//给界面上方的菜单条添加监听器f_new = new JMenuItem("新建(N)");f_new.setAccelerator(KeyStroke.getKeyS troke('N',InputEvent.CTRL_MASK,false)); //设置带修饰符快捷键f_new.addActionListener(this);f_open = new JMenuItem("打开(O)");f_open.setAccelerator(KeyStroke.getKey Stroke('O',InputEvent.CTRL_MASK,false));f_open.addActionListener(this);f_save = new JMenuItem("保存(S)");f_save.setAccelerator(KeyStroke.getKey Stroke('S',InputEvent.CTRL_MASK,false));f_save.addActionListener(this);f_saveas = new JMenuItem("另存为");f_saveas.setAccelerator(KeyStroke.getKe yStroke(KeyEvent.VK_S,InputEvent.CTRL_ MASK|InputEvent.SHIFT_MASK));f_saveas.addActionListener(this);f_close = new JMenuItem("退出(W)");f_close.setAccelerator(KeyStroke.getKey Stroke('W',InputEvent.CTRL_MASK,false));f_close.addActionListener(this);e_copy = new JMenuItem("复制(C)");e_copy.setAccelerator(KeyStroke.getKey Stroke('C',InputEvent.CTRL_MASK,false));e_copy.addActionListener(this);e_paste = new JMenuItem("粘贴(V)");e_paste.setAccelerator(KeyStroke.getKeyStro ke('V',InputEvent.CTRL_MASK,false));e_paste.addActionListener(this);e_cut = new JMenuItem("剪切(X)"); e_cut.setAccelerator(KeyStroke.getKeyStroke ('X',InputEvent.CTRL_MASK,false));e_cut.addActionListener(this);e_clear = new JMenuItem("清除(D)");e_clear.setAccelerator(KeyStroke.getKeyStrok e('D',InputEvent.CTRL_MASK,false));e_clear.addActionListener(this);e_selectAll = new JMenuItem("全选(A)");e_selectAll.setAccelerator(KeyStroke.getKey Stroke('A',InputEvent.CTRL_MASK,false));e_selectAll.addActionListener(this);e_find = new JMenuItem("查找(F)");e_find.setAccelerator(KeyStroke.getKeyStrok e('F',InputEvent.CTRL_MASK,false));e_copy.addActionListener(this);e_replace = new JMenuItem("替换(R)");e_replace.setAccelerator(KeyStroke.getK eyStroke('R',InputEvent.CTRL_MASK,false)) ;e_replace.addActionListener(this);s_font = new JMenuItem("字体(T)");s_font.setAccelerator(KeyStroke.getKeyStrok e('T',InputEvent.CTRL_MASK,false));s_font.addActionListener(this);s_color = new JMenuItem("颜色(C)...");s_color.setAccelerator(KeyStroke.getKeyStro ke(KeyEvent.VK_C,InputEvent.CTRL_MAS K | InputEvent.SHIFT_MASK));s_color.addActionListener(this);h_editor = new JMenuItem("关于记事本");h_editor.setAccelerator(KeyStroke.getKeyStro ke(KeyEvent.VK_E,InputEvent.CTRL_MAS K));h_editor.addActionListener(this);h_help = new JMenuItem("帮助信息(H)");h_help.setAccelerator(KeyStroke.getKeyStrok e(KeyEvent.VK_I,InputEvent.CTRL_MASK) );h_help.addActionListener(this);//添加右键弹出式菜单popUpMenu.add(je_copy);popUpMenu.add(je_paste);popUpMenu.add(je_cut);popUpMenu.add(je_clear);popUpMenu.addSeparator();popUpMenu.add(je_selectAll);popUpMenu.add(je_find);popUpMenu.add(je_replace);//编辑区鼠标事件,点击右键弹出"编辑"菜单textArea.addMouseListener(new MouseAdapter(){public void mouseReleased(MouseEvent e) {if(e.getButton() == MouseEvent.BUTTON3)popUpMenu.show(e.getComponent(), e.getX(), e.getY());} //e.getComponent()和textArea具有同等效果public void mouseClicked(MouseEvent e){if(e.getButton() == MouseEvent.BUTTON1)popUpMenu.setVisible(false);}});this.setJMenuBar(jmb);this.setTitle("记事本程序");file.add(f_new); //添加文件菜单组件file.add(f_open);file.addSeparator(); //加分隔线file.add(f_save);file.add(f_saveas);file.addSeparator();file.add(f_close);edit.add(e_copy); //添加编辑菜单组件edit.add(e_paste);edit.add(e_cut);edit.add(e_clear);edit.addSeparator();edit.add(e_selectAll);edit.add(e_find);edit.add(e_replace);style.addSeparator();style.add(s_font);style.add(s_color);jmb.add(file); //添加格式菜单组件jmb.add(edit);jmb.add(style);jmb.add(help);help.add(h_editor); //添加帮助菜单组件help.add(h_help);//textArea.setWrapStyleWord(true); //设置在单词过长的时候是否要把长单词移到下一行。

用JAVA编万年历和记事本

用JAVA编万年历和记事本

用JAVA编写万年历!万年历其实可分为5步来做,下面我们来详细分析下步骤:a:先输出提示语句,并接受用户输入的年、月。

b:根据用户输入的年,先判断是否是闰年。

C:根据用户输入的月来判断月的天数。

D:用循环计算用户输入的年份距1900年1月1日的总天数。

E:用循环计算用户输入的月份距输入的年份的1月1日共有多少天。

F:相加D与E的天数,得到总天数。

G:用总天数来计算输入月的第一天的星期数。

H:根据G的值,格式化输出这个月的日历!其实有些步骤是可以合并的,这得靠大家自己的习惯了,下面我们就来一步一步来完成万年历。

&lt;这里只提供讲解,没有源码下载哦!其实大家不必去网上下载,那有意思吗?我们学习是为了什么啊!要下载那就不必来这了!呵呵,发表下自己的看法!&gt;这里大家肯定都能看得懂的,1:这是为了美化,我们编的程序是让别人看的,所以就要输出个标题的。

2:这里就是用来接收用户输入的信息,并赋值给两个变量!这个相信大家都能看得懂!3:这里我们就要开始万年历的真正开发了,看完代码大家都知道这是要进行闰年判断了,这里大家要先明白判断闰年的条件是什么?(条件:这个年首先不是整百年就是最后两位是0的年,因为如果是的话就要除以400了,并且还要能被4整除的或者就是整百年能被400除尽的年是闰年)这里声明了一个boolean值,用来储存是否是闰年,因为咱们后面要用得到的!下面就要进行第二步了,来处理用户输入的月了,看完后大家都明白了吧!这里要用if来判断输入的月份,我们给月份分类,有这几种情况:有31天,有30天,有29天,有28天,下面我们就要想明白每个类的判断条件了?(条件:有31天的月是1、3、5、7、8、10、12,有30天的月是4、6、9、11,剩下就是2月了,它有两种情况,就是根据第一步的boolean值来判断了,如果为true就是29天,为false则是28天了。

)这里用到了一个变量tian,因为咱们后面还要用到的,这些变量可以在做到后面再回来补上的。

JAVA《万年历系统》课程设计报告附源码

JAVA《万年历系统》课程设计报告附源码

2013-2014学年第二学期《面向对象程序设计》课程设计报告题目:万年历系统专业:计算机科学与技术班级:姓名:学号:指导教师:成绩:计算机与信息工程系2014年6月6日目录1 设计内容及要求 (1)1.1设计内容 (1)1.2设计任务及具体要求 (1)2 概要设计 (2)2.1程序设计思路 (2)2.2 总体程序框图 (3)3 设计过程或程序代码 (4)3.1各个模块的程序流程图及运行界面 (4)3.2对关键代码加以分析说明 (7)4 设计结果与分析 (13)4.1程序调试的结果 (13)4.2程序设计分析 (13)5 小结 (14)致谢 (15)参考文献 (16)源程序 (17)1 设计内容及要求1.1设计内容万年历,实际上就是记录一定时间范围内(比如100年或更多)的具体阳历或阴历的日期的年历,方便有需要的人查询使用。

在我设计的万年历中主要有:(1)使用图形用户界面来查询用用户所需的日期信息,符合日常软件使用规范。

(2)按月份查询,实现了显示查询1901~2100年某月所有日期的阴阳历对照。

(3)并且添加了重大节日与星座等信息,界面采用日常的星期与月份结合的格式,方便查看与使用。

(4)编写万年历的课程设计,是为了使同学们更加了解高级程序设计语言的结构,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。

为后续各门计算机课程的学习和毕业设计打下坚实基础。

1.2设计任务及具体要求利用JAVA语言编写的万年历系统采用了多种JAVA语句来实现多种功能。

用户可以通过本程序的applet运行界面来查找一整年某月的农历和阳历,可以查找用户所想了解的某一天具体为星期几,并且可以看到一些重大节日的具体时间。

要求:满足设计万年历系统的目的,即当用户查询年份与月份时,系统就要将这一年的某一月份的阴历与阳历全部显示出来,并且附带这一月份的重大节日。

当用户随意改动年份或月份时系统自动显示与星期对应的日期。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2015年12月18日一、课程题目设计一个万年历系统,实现以下功能(1)可以查看当前的年份、月份和日期;(2)有时间栏,便于用户查看当前时间;(3)能够查找1至9999年的日期与星期的关系。

其它功能可自行开发。

二、题目分析与设计1.使用的开发环境为eclipseJdk环境:jdk1.82. (此为万年历界面图)使用了jTabbedPane 类对功能页面分页,布局策略基本用BorderLayout 和GridLayout 。

3.本项共有5个类,基本一个功能有一个类实现,主类CalendarMain只包含一个main函数:对创建框架和其属性设置。

AlarmDemo类则实现闹钟功能;NoteBook 类实现记事本功能;CalendarsView 类则实现基本日历功能,ChooseDay 类是一个弹窗,被CalendarsView 调用,CalendarsView 、AlarmDemo 也在该类被调用;.new CalendarsView();4.日历界面使用了jTable ,功能的实现逻辑则是1.首先定义两个全局变量---年和月,查看不同时间的日历,该变量也随之改变。

2.写了几个函数获取今年第一天是星期几,然后根据月份天数即可推算具体某月第一天是星期几。

3.知道一个月第一天是星期几,则该月日历既可以顺序列出。

闹钟的功能实现思路:1.获取界面设定的时间。

2.使用线程,每过一秒急救获取当前时间,并判断是否到达设定的时间3.到设定的时间,启动弹窗,播放闹铃4.闹铃科根据文件选择器自行选择记事本功能实现思路1.在项目文件夹先新建一个txt文件作为储存的数据库2.利用File 类和io 数据流将界面文本储存进txt文件,实现保存功能3.每当程序启动,读取txt文件内容并显示到界面上三、测试分析1.使用如下拓展包2.程序界面截图如下日历主界面闹钟界面记事本界面3.测试流程及功能介绍(1)点击上一月、下一月可查看不同月份日历,左下角显示当前时间。

点击蓝色的日期栏可以回到当前页(2)点击圈中按钮会出现弹框,可以调节年、月,查看指定年月日历(3)闹铃可以使用默认闹铃,也能自定义选择闹铃,不过闹铃格式只能为wav或au时间到了以后出现弹框,并响起闹铃(4)记事本输入文本,按保存即可。

(5)点击最小化按钮,可以选择普通缩小或者直接缩小到托盘.附录:源代码(注:在工程目录下新建文件夹source ,并添加了闹铃文件,txt,托盘图片,如图)AlarmDemo.javaimport java.applet.Applet;import java.applet.AudioClip;import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import javax.swing.*;import javax.swing.text.DefaultFormatterFactory;import javax.swing.text.NumberFormatter;public class AlarmDemo extends JPanel implements Runnable { private static final long serialVersionUID = -7066237267822356675L;Thread alarm;public AudioClip soumd1;Calendar c = Calendar.getInstance();JButton sure = new JButton("确定");JButton open = new JButton("可选择闹铃");JLabel jLabel = new JLabel("设置时间日-时-分", JLabel.CENTER);JLabel dayLabel = new JLabel("日", JLabel.CENTER);JLabel hourLabel = new JLabel("时", JLabel.CENTER);JLabel minuteLabel = new JLabel("分", JLabel.CENTER);JPanel jPanel1 = new JPanel();JPanel jPanel2 = new JPanel();JPanel jPanel3 = new JPanel();JPanel jPanel4 = new JPanel();JTextField music = new JTextField(System.getProperty("user.dir")+"\\source\\alarm.wav");int y = 0, m = 0, h = 0, mi = 0, d = 0;boolean fo = false;public AlarmDemo() {music.setEditable(false);// 设置标签格式dayLabel.setFont(new Font("Dialog", 1, 30));hourLabel.setFont(new Font("Dialog", 1, 30));minuteLabel.setFont(new Font("Dialog", 1, 30));jLabel.setFont(new Font("Dialog", 1, 30));//按钮设置sure.setContentAreaFilled(false);sure.setFocusPainted(false);open.setContentAreaFilled(false);open.setFocusPainted(false);JSpinner spinner1 = new JSpinner();JSpinner spinner2 = new JSpinner();JSpinner spinner3 = new JSpinner();spinner3.setModel(new SpinnerNumberModel(c.get(Calendar.DATE), 1, 31, 1));spinner1.setModel(new SpinnerNumberModel(c.get(Calendar.HOUR_OF_DAY),0, 23, 1));XXX——《Java语言》课程期末作业spinner2.setModel(new SpinnerNumberModel(c.get(Calendar.MINUTE), 0, 59,1));// 设置属性setSpinners(spinner1);setSpinners(spinner2);setSpinners(spinner3);jPanel4.add(jLabel);jPanel4.setPreferredSize(new Dimension(500, 100));jPanel1.setLayout(new GridLayout(1, 6));jPanel1.add(spinner3);jPanel1.add(dayLabel);jPanel1.add(spinner1);jPanel1.add(hourLabel);jPanel1.add(spinner2);jPanel1.add(minuteLabel);jPanel1.setPreferredSize(new Dimension(500, 100));jPanel2.setLayout(new BorderLayout());jPanel2.add(jPanel4, BorderLayout.NORTH);jPanel2.add(music, BorderLayout.CENTER);jPanel2.add(open, BorderLayout.EAST);jPanel3.setLayout(new GridLayout(1, 1));jPanel3.add(sure);setLayout(new BorderLayout());add(jPanel1, BorderLayout.NORTH);add(jPanel2, BorderLayout.CENTER);add(jPanel3, BorderLayout.SOUTH);XXX——《Java语言》课程期末作业open.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent event) {JFileChooser fileChooser = new JFileChooser(); // 实例化文件选择器fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // 设置文件选择模式,此处为文件和目录均可fileChooser.setCurrentDirectory(new File(".")); // 设置文件选择器当前目录fileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() {public boolean accept(File file) { // 可接受的文件类型String name = file.getName().toLowerCase();return name.endsWith(".wav")|| name.endsWith(".au")|| file.isDirectory();}public String getDescription() { // 文件描述return "音乐文件(*.wav,*.au)";}});if (fileChooser.showOpenDialog(AlarmDemo.this) == JFileChooser.APPROVE_OPTION) { // 弹出文件选择器,并判断是否点击了打开按钮String fileName = fileChooser.getSelectedFile().getAbsolutePath(); // 得到选择文件或目录的绝对路径music.setText(fileName);}}});sure.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent event) {if (sure.getText().equals("确定")) {try {d = (int) spinner3.getValue();h = (int) spinner1.getValue();mi = (int) spinner2.getValue();if (1 <= d && d <= 31 && 0 <= h && h <= 23 && 0 <= mi&& mi <= 59) {fo = true;jLabel.setText("设置闹钟成功");spinner1.setEnabled(false);spinner2.setEnabled(false);spinner3.setEnabled(false);start();} elseJOptionPane.showMessageDialog(null, "输入时间错误");} catch (Exception e) {JOptionPane.showMessageDialog(null, "请输入正确的时间");}} else {spinner1.setEnabled(true);spinner2.setEnabled(true);spinner3.setEnabled(true);fo = false;stop();soumd1.stop();sure.setText("确定");jLabel.setText("设置时间日-时-分");}}});}public void start() {if (alarm == null) {alarm = new Thread(this);alarm.start();}}public void stop()// 停止线程{alarm = null;}public void run() {while (true) {Date now = new Date();if (fo) {sure.setText("关闭");SimpleDateFormat ri = new SimpleDateFormat("dd"); // 封装为了获取日期SimpleDateFormat shi = new SimpleDateFormat("kk"); // 封装为了获取小时SimpleDateFormat fen = new SimpleDateFormat("mm"); // 封装为了获取分int riqi = Integer.parseInt(ri.format(now)); // 获取日期int shizhong = Integer.parseInt(shi.format(now)); // 获取小时int fenzhong = Integer.parseInt(fen.format(now)); // 获取分钟if (riqi == d && shizhong == h && fenzhong == mi) // 判断条件{try {soumd1 = Applet.newAudioClip(new File(music.getText()).toURL()); // 播放音乐soumd1.loop();fo = false;JOptionPane.showMessageDialog(null, "时间到了!!!(⊙v⊙)");} catch (Exception e) {e.printStackTrace();}}}try {Thread.sleep(1000);} catch (InterruptedException ie) {}}}public void setSpinners(JSpinner spinner) {// 设置属性JSpinner.NumberEditor editor = new JSpinner.NumberEditor(spinner, "0");spinner.setEditor(editor);JFormattedTextField textField = ((JSpinner.NumberEditor) spinner.getEditor()).getTextField();textField.setFont(new Font("Dialog", 1, 45));textField.setEditable(true);DefaultFormatterFactory factory = (DefaultFormatterFactory) textField.getFormatterFactory();NumberFormatter formatter = (NumberFormatter) factory.getDefaultFormatter();formatter.setAllowsInvalid(false);}}CalendarsView.javaimport java.awt.AWTException;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.Frame;import java.awt.GridLayout;import java.awt.SystemTray;import java.awt.TrayIcon;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;import java.io.File;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import javax.imageio.ImageIO;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTabbedPane;import javax.swing.JTable;import javax.swing.Timer;import javax.swing.table.DefaultTableModel;public class CalendarsView extends JFrame {private static final long serialVersionUID = 1L;static Calendar c = Calendar.getInstance();static int year = c.get(Calendar.YEAR);static int month = c.get(Calendar.MONTH) + 1;int monthday = 0;String[] weekdaystr = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };Object[][] monthview = new String[6][7];JPanel dayPanel = new JPanel();JPanel panel1 = new JPanel();JPanel calPanel = new JPanel();JPanel alarmDemo = new AlarmDemo();JPanel noteBook = new NoteBook();JTabbedPane jTabbedPane = new JTabbedPane(JTabbedPane.TOP);JButton Prebutton = new JButton("上一月");JButton Nextbutton = new JButton("下一月");JButton PreYear = new JButton("上一年");JButton NextYear = new JButton("下一年");JButton Change = new JButton(c.get(Calendar.YEAR) + "年"+ (c.get(Calendar.MONTH) + 1) + "月");JLabel nowLabel = new JLabel(c.get(Calendar.YEAR) + "年"+ (c.get(Calendar.MONTH) + 1) + "月" + (c.get(Calendar.DATE)) + "日",JLabel.CENTER);JLabel timeLabel = new JLabel("---", JLabel.LEFT);DefaultTableModel model = new DefaultTableModel();JTable JTable;JScrollPane JScrollPane;TrayIcon trayIcon;//托盘图标SystemTray systemTray;//系统托盘public CalendarsView() {//托盘化systemTray = SystemTray.getSystemTray();//获得系统托盘的实例try {trayIcon = new TrayIcon(ImageIO.read(new File(System.getProperty("user.dir")+"\\source\\360.png")));}catch (IOException e1) {e1.printStackTrace();}this.addWindowListener(new WindowAdapter(){public void windowIconified(WindowEvent e){XXX——《Java语言》课程期末作业int n = JOptionPane.showConfirmDialog(null, "是否缩小到托盘?", "缩小", JOptionPane.YES_NO_OPTION);if (n == JOptionPane.YES_OPTION) {dispose();//窗口最小化时dispose该窗口try {systemTray.add(trayIcon);} catch (AWTException e1) {e1.printStackTrace();}//设置托盘的图标} else if (n == JOptionPane.NO_OPTION) {systemTray.remove(trayIcon);}}});trayIcon.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent e){if(e.getClickCount() == 2)//双击托盘窗口再现setExtendedState(Frame.NORMAL);setVisible(true);systemTray.remove(trayIcon);}});//时间栏Timer timer = new Timer(1000, new ActionListener() {public void actionPerformed(ActionEvent evt) {XXX——《Java语言》课程期末作业timeLabel.setText(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));}});timer.start();nowLabel.setFont(new java.awt.Font("Dialog", 1, 15));nowLabel.setForeground(Color.blue);dataOfDay();dayPanel.setLayout(new BorderLayout());dayPanel.add(nowLabel, BorderLayout.NORTH);dayPanel.add(JScrollPane, BorderLayout.CENTER);// 上方按钮panel1.setLayout(new GridLayout(1, 3));panel1.setBackground(Color.white);Prebutton.setContentAreaFilled(false);Prebutton.setFocusPainted(false);Change.setContentAreaFilled(false);Change.setFocusPainted(false);Nextbutton.setContentAreaFilled(false);Nextbutton.setFocusPainted(false);panel1.add(Prebutton);panel1.add(Change);panel1.add(Nextbutton);calPanel.setLayout(new BorderLayout());calPanel.add(panel1, BorderLayout.NORTH);calPanel.add(dayPanel, BorderLayout.CENTER);calPanel.add(timeLabel, BorderLayout.SOUTH);jTabbedPane.add(calPanel, "日历");jTabbedPane.add(alarmDemo,"闹钟");jTabbedPane.add(noteBook,"记事本");add(jTabbedPane, BorderLayout.NORTH);// 按钮监听器Prebutton.addActionListener(new PressButton());Nextbutton.addActionListener(new PressButton());Change.addMouseListener(new MouseListener() {public void mouseClicked(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON1)new ChooseDay(null, year, month).setVisible(true);dataOfDay();Change.setText(year + "年" + month + "月");}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}});nowLabel.addMouseListener(new MouseListener() {public void mouseClicked(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON1)year = c.get(Calendar.YEAR);month = c.get(Calendar.MONTH) + 1;dataOfDay();Change.setText(year + "年" + month + "月");}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}});}public void dataOfDay() {int n = 1;int k = getDays();for (int i = 0; i < 6; i++) {for (int j = 0; j < 7; j++) {if (i == 0 && j < k % 7 || n > getMonthDay(month)) {monthview[i][j] = "";} else {monthview[i][j] = String.valueOf(n);n++;}}}model.setRowCount(0);model.setDataVector(monthview, weekdaystr);JTable = new JTable(model);JTable.setGridColor(Color.gray);JTable.setBackground(Color.white);JTable.setColumnSelectionAllowed(true);// 将table中的列设置为可选择的JTable.setSelectionBackground(Color.pink);// 当选定某一天时背景颜色为粉JTable.setSelectionForeground(Color.BLUE);JTable.setFont(new Font("黑体", Font.BOLD, 24));// 日期数字字体格式JTable.setRowHeight(26);// 表格的高度JScrollPane js = new JScrollPane(JTable);// 设置大小Dimension dimension = new Dimension(500, 185);js.setPreferredSize(dimension);JScrollPane = js;}public boolean isLeapYear(int year1) // 判断是否是闰年{return ((year1 % 4 == 0 && year1 % 100 != 0) || (year1 % 400 == 0)); }public int firstDay() // 计算该年第一天是星期几{long n = year * 365;for (int i = 1; i < year; i++) {if (isLeapYear(i)) {n++;}}return (int) n % 7;}public int getMonthDay(int m) // 获取每个月的天数{switch (m) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;case 4:case 6:case 9:case 11:return 30;case 2:if (isLeapYear(year))return 29;elsereturn 28;default:return 0;}}// 获取该月月第一天是星期几public int getDays() {monthday = 0;for (int i = 1; i < month; i++)monthday += getMonthDay(i);return (firstDay() + (monthday % 7)) % 7;}public class PressButton implements ActionListener { @Overridepublic void actionPerformed(ActionEvent e) {JButton button = (JButton) e.getSource();if (button == Prebutton) {month--;if (month <= 0) {year--;month += 12;}} else {month++;if (month > 12) {year++;month -= 12;}}dataOfDay();Change.setText(year + "年" + month + "月");}}}ChooseDay.javaimport java.awt.BorderLayout;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFormattedTextField;import javax.swing.JPanel;import javax.swing.JSpinner;import javax.swing.SpinnerNumberModel;import javax.swing.text.DefaultFormatterFactory;import javax.swing.text.NumberFormatter;public class ChooseDay extends JDialog {private static final long serialVersionUID = -3230014153625851275L;private JButton sure = new JButton("完成");private JButton cancel = new JButton("取消");public ChooseDay(CalendarsView calendarsView, int year, int mouth) { super(calendarsView, "设置日期", true);JPanel panel1 = new JPanel();JPanel panel2 = new JPanel();JSpinner spinner1 = new JSpinner();JSpinner spinner2 = new JSpinner();spinner1.setModel(new SpinnerNumberModel(year, 0, 9999, 1));spinner2.setModel(new SpinnerNumberModel(mouth, 1, 12, 1));//设置属性setSpinners(spinner1);setSpinners(spinner2);panel1.add(spinner1);panel1.add(spinner2);sure.setContentAreaFilled(false);sure.setFocusPainted(false);cancel.setContentAreaFilled(false);cancel.setFocusPainted(false);panel2.setLayout(new GridLayout(1, 2));panel2.add(cancel);panel2.add(sure);add(panel1, BorderLayout.NORTH);add(panel2, BorderLayout.SOUTH);pack(); // 按组件天界大小setResizable(false); // 不可调节窗口大小setLocationRelativeTo(null); // 居中显示窗口sure.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {dispose();CalendarsView.year = (int) spinner1.getValue();CalendarsView.month = (int) spinner2.getValue();}});cancel.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent evt) {dispose(); // 关闭当前窗口}});}public void setSpinners(JSpinner spinner){//设置属性JSpinner.NumberEditor editor = new JSpinner.NumberEditor(spinner, "0");spinner.setEditor(editor);JFormattedTextField textField = ((JSpinner.NumberEditor) spinner.getEditor()).getTextField();textField.setFont(new java.awt.Font("Dialog", 1, 30));textField.setEditable(true);DefaultFormatterFactory factory = (DefaultFormatterFactory) textField.getFormatterFactory();NumberFormatter formatter = (NumberFormatter) factory.getDefaultFormatter();formatter.setAllowsInvalid(false);}}NoteBook .javaimport java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.Font;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import javax.swing.JButton;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;public class NoteBook extends JPanel {private static final long serialVersionUID = 5692290911249557954L;JTextArea jTextArea = new JTextArea();JScrollPane JScrollPane = new JScrollPane(jTextArea);JButton jButton = new JButton("保存");JPanel jPanel1 = new JPanel();JPanel jPanel2 = new JPanel();public NoteBook() {open();jTextArea.setFont(new Font("宋体", 1, 15));jButton.setContentAreaFilled(false);jButton.setFocusPainted(false);JScrollPane.setVisible(true);jPanel1.setLayout(new BorderLayout());jPanel1.add(JScrollPane, BorderLayout.CENTER);jPanel1.setPreferredSize(new Dimension(500, 230));jPanel2.setLayout(new BorderLayout());jPanel2.add(jButton, BorderLayout.CENTER);this.setLayout(new BorderLayout());this.setBackground(Color.white);add(jPanel1, BorderLayout.NORTH);add(jPanel2, BorderLayout.SOUTH);jButton.addMouseListener(new MouseListener() {public void mouseClicked(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON1)save();}public void mousePressed(MouseEvent e) {}public void mouseReleased(MouseEvent e) {}public void mouseEntered(MouseEvent e) {}public void mouseExited(MouseEvent e) {}});}//打开的具体方法private void open() {try {File file = new File(System.getProperty("user.dir")+ "\\source\\note.txt");BufferedInputStream in = new BufferedInputStream(new FileInputStream(file));byte[] b = new byte[in.available()];in.read(b, 0, b.length);jTextArea.append(new String(b, 0, b.length));in.close();}catch (IOException ex) {jTextArea.setText("Error opening ");}}// 保存具体private void save() {try {File file = new File(System.getProperty("user.dir")+ "\\source\\note.txt");BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file));byte[] b = (jTextArea.getText()).getBytes();out.write(b, 0, b.length);out.close();JOptionPane.showMessageDialog(null, "保存成功");} catch (IOException ex) {jTextArea.setText("Error saving ");}}}CalendarMain.javaimport javax.swing.JFrame;public class CalendarMain {public static void main(String[] args) {CalendarsView frame = new CalendarsView();frame.setTitle("万年历");frame.setResizable(false);frame.pack();XXX——《Java语言》课程期末作业frame.setLocationRelativeTo(null);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}}。

相关文档
最新文档