演示图
演示图
calendarapp.java
包装日历;导入java.aw.awt.borderlayout; import java.awt.color; import java.ava.awt.flowlayout; import java.awt.font; import java java java.awt.gridlayout; import java.ava.ava.awt.event.event.actional; import java java.ava.event java 。 java.util.gregoriancalendar;进口java.util.locale; import javax.swing.JApplet;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.SwingUtilities;import javax.swing.border.titledborder; public class calendarapp扩展了jframe {private calendarpanel calendarpanel = new calendarpanel();私有静态jlabel jlbllearn = new jlabel(“开始准备记单词”); private String versionId =“欢迎使用版本1.0.20150427”; private jlabel jlblversionid = new Jlabel(versionId);私人jbutton jbtprior = new jbutton(“←”);私人jbutton jbtnext = new jbutton(“→”);私人jbutton jbtdiary = new jbutton(“写日记”);私人jbutton jbtscandiary = new jbutton(“看日记”);私人静态INT年; public void init(){eY = calendarpanel.getyear(); calendarpanel.setBackground(color.White); / ** *添加功能性按钮到日历面板下方 */ jpanel jpbuttons = new jpanel(new Flowlayout()); //设置按钮背景色为白色jbtprior.setbackground(color.White); jbtnext.setbackground(color.White); jbtdiary.setbackground(color.White); jbtscandiary.setbackground(color.White); / * *给四个按钮添加鼠标事件,使其更加炫酷 */// 一、后退按钮 jbtprior.addmouselistener(new Mouselistener(){@override public public void mouseclicked(mouseevent arg0){// stub} @Override公共void鼠标(mouseevent arg0){// todo自动生成的方法stub jbtprior.set.setforeground(color.green) @override public void public void mouseexited(mouseeevent arg0) setForeground(color.black);} @Override public void mousepressed(mouseevent arg0){// todo todo auto-generated方法stub} @override public void mouserealeal(mouseeevent arg0){// // 二、前进按钮 jbtnext.addmouselistener(new MouseListener(){@Override public void mouseclicked(Mouseeevent arg0){// todo自动生成的方法stub unib} @override public void public void upertenterementecterementecter(mouseeevent armouseEntered auto auto auto auto auto auto auto auto to do do do方法stub jbtnext.set.foreground(color.green);} @Override public void mouseexited(mouseeevent arg0){// // todo自动生成的方法stub} @Override public void mousereareaseal(mouseevent arg0){// todo自动生成的方法stub}}); // 三、写日记按钮 jbtdiary.addmouselisteristener(new Mouselistener(){@Override public void mouseclicked(Mouseeevent arg0){// todo auto-generated auto-generated方法ubent @overoverride @override public void public void youseEnentered(mouseeevent auto to to to to do to do do to do do do do生成的方法jbtdiary.setForeground(color.green);} @override public void mouseexited(mouseeevent arg0){// {// todo自动生成的方法stub} @Override public void mousereareared(mouseevent arg0){// todo自动生成的方法stub}}}); // 四、看日记按钮 jbtscandiary.addmouselistener(new MouseListener(){@Override public void mouseclicked(mouseeevent arg0){// todo auto-generated auto-generated方法stub} @override public void public void upertentecterementement public void autementered(mouseeevent auto auto to to to to to do do do do do do do生成的方法jbtscandiary.setForeground(color.green);} @override public void mouseexited(mouseeevent arg0) {// todo自动生成的方法stub} @Override public void mousereareared(mouseevent arg0){// todo自动生成的方法stub}}}); jpbuttons.add(jbtprior); jpbuttons.add(jbtnext); jpbuttons.add(jbtdiary); jpbuttons.add(jbtscandiary); jpbuttons.setbackground(color.White); / ** *添加日历主要组件 */ jpanel jpcalendar = new jpanel(new borderlayout()); jpcalendar.add(calendarpanel,borderlayout.center); jpcalendar.add(jpbuttons,borderlayout.south); / ** *添加背单词模块 */ jpanel jplearn = new jpanel(new Flowlayout()); jplearn.setborder(new titleborder(“开心背单词”)); jplearn.add(jlbllearn); jplearn.setbackground(color.White); / ** *添加版本号信息 */ jpanel jpversionid = new Jpanel(new Flowlayout());字体字体= new font(“宋体”,font.plain,4); jpversionid.setFont(font); jpversionid.add(jlblversionid); jpversionid.setbackground(color.White); / ** *容器面板,合并记单词与版本号模块 */ jpanel jpbelow = new jpanel(new BorderLayout(2,1)); jpbelow.add(jplearn,borderlayout.center); jpbelow.add(jpversionid,borderlayout.south); this.add(jpcalendar,borderlayout.center); this.add(jpbelow,borderlayout.south); this.setBackground(color.White); this.setsize(700,500); this.setLocationRelativeto(null); this.settitle(“多功能日历”); this.setDefaultClosePoration(exit_on_close); this.setvisible(true); jbtscandiary.addactionListener(new ActionListener(){@Override public void actionPerformed(actionEvent e){new thread(new thread_scandiary()) jbtdiary.addactionListener(new ActionListener(){@Override public void ActionPerformed(ActionEvent e){// simpledateFormat df = new simpledeDateFormat(“ yyyy-mm-dd hh-mm-ss”格式字符串时间= df.format(new Date()); jbtprior.addactionListener(new ActionListener(){@Override public void actionPerformed(actionEvent e){// todo auto-generated方法stub int cund curressMonth = calendarpanel.getMonth(); if(currentMonth == 0) ;} calendarpanel。 jbtnext.addactionListener(new ActionListener(){@Override public void actionPerformed(actionEvent e){// todo auto-generated方法stub int cundermonth = calendarpanel.getMonth(); if(currentMonth == 11) };} calendarpanel.setmonth(CurressMonth+1)%12); } public static void main(string [] args)抛出InterruptedException {// todo auto-generated方法stub swingutilities.invokelater(new runnable(){@Override public void run() ).init(); }}} calendarpanel.java
/** *本程序功能是进行日历主面板布局 */package calenda; import Java.ava.awt.borderlayout; import Java.awt.color; import Java.ava.awt.font; import Java.ava.ava.awt.gridlayOut; import Java.ava.ava.avent.event.mouseevent.mouseevent; import Java.ava.ava.ava.avt.event.mouselister.mouselisterister; import java.text; import java.text; .dateformatsymbols; import Java.text.simpledateFormat; import Java.util.calendar; import Java.util.gregoriancalendar; import Java.util.locale;导入javax.swing。*;导入javax.swing.border.lineborder;公共类ChalendarPanel扩展了Jpanel { / ** *声明数据变量 * /私有静态最终long serialversionuid = 1l;私人jlabel jlblheader = new jlabel(“”,jlabel.center);私人jlabel [] jlblday = new jlabel [49];私人日历calendar = new GregorianCalendar(); private int year0 = calendar.get(calendar.year); private int montry0 = calendar.get(calendar.nonth); private int day0 = calendar.get(calendar.day_of_month);私人int月;私人INT年;私人int日;私人jpanel jpdays = new jpanel(new gridlayout(0,7));字体font1 = new font(“宋体”,font.italic,20);字体font2 = new font(“宋体”,font.bold,26);字体font3 = new font(“宋体”,font.bold,30); public calendarpanel(){//设置日历头部件以及日期标签的背景色为白色jlblheader.setbackground(color.white); jpdays.setbackground(color.White); //声明每个标签for(int i = 0; i <49; i ++){jlblday [i] = new Jlabel(); jlblday [i] .setBorder(new lineBorder(color.light_gray,1)); jlblday [i] .sethorizontalalailmignment(jlabel.right); jlblday [i] .setVerticalAlignment(jlabel.top); } calendar = new GregorianCalendar();月= calendar.get(calendar.nonth);年= calendar.get(calendar.year); day = calendar.get(calendar.date); //更新日历updateCalendar(); Showheader(); showdays(); // this.setLayout(new BorderLayout()); this.add(jlblheader,borderlayout.north); this.add(jpdays,borderlayout.center); } private void showheader(){simpleDateFormat sdf = new SimpleDateFormat(“ mmmm yyyy”,locale.china);字符串header = sdf.format(calendar.getTime()); jlblheader.setText(header); jlblheader.setForeground(color.blue); jlblheader.setfont(font3); } private void showdayNames(){dateformatsymbols dfs = new DateFormatSymbols(locale.china);字符串daynames [] = dfs.getweekdays(); for(int i = 0; i <7; i ++){jlblday [i] .setText(dayNames [i+1]); jlblday [i] .setForeground(color.blue); jlblday [i]。 jlblday [i] .setfont(font2); jpdays.add(jlblday [i]); }} public void showdays(){jpdays.removeall(); ShowDayNames(); int staterDayofMonth = calendar.get(calendar.day_of_week);日历clonecalendar =(日历)calendar.clone(); clonecalendar.add(calendar.date,-1); int daysInprecedingMonth = cloneCalendar.getActualMaximum(calendar.day_of_month); for(int i = 0; i <starkingDayofMonth-1; i ++){jlblday [i+7] .setForeground(color.light_gray); jlblday [i+7] .sethorizontalalailmignment(jlabel.center); jlblday [i+7] .setText(daysInInprecedMonth-startingDayofMonth+2+i+“”); jlblday [i+7] .setFont(font1); jpdays.add(jlblday [i+7]); } int daysIncurrentMonth = calendar.getActualMaximum(calendar.day_of_month); for(int i = 1; i <= daysIncurnentMonth; i ++){if(i == day0 && year ==年== eyal0 && soner == sontry0){jlblday [i-2+startingDayofMonth+7] .setForeforeground(color.red.red); jlblday [i-2+开始dayofmonth+7]。 jlblday [i-2+startingDayofMonth+7] .setText(i+“”); jlblday [i-2+startingDayofMonth+7] .setFont(font2); jpdays.add(jlblday [i-2+startingDayofMonth+7]); } else {jlblday [i-2+staterdayofmonth+7] .setForeground(color.darkgray); jlblday [i-2+开始dayofmonth+7]。 jlblday [i-2+startingDayofMonth+7] .setText(i+“”); jlblday [i-2+startingDayofMonth+7] .setFont(font1); jpdays.add(jlblday [i-2+startingDayofMonth+7]); }} int j = 1; for(int i = daysIncurrentMonth-1+startingDayofMonth+7; i%7!= 0; i ++){jlblday [i] .setForeground(color.light_gray); jlblday [i]。 jlblday [i] .setText(j +++“”); jlblday [i] .setfont(font1); jpdays.add(jlblday [i]); } jpdays.repaint(); } public void updateCalendar(){calendar.set(calendar.year,年); calendar.set(日历。月,月); calendar.set(calendar.date,1);月= calendar.get(calendar.nonth);年= calendar.get(calendar.year); day = calendar.get(calendar.date); } public int getMonth(){返回月; } public int getyear(){返回年; } public void setMonth(int个月){this.month =月; updateCalendar(); Showheader(); showdays(); } public void setyear(int年){this.year =年; updateCalendar(); Showheader(); showdays(); }}}日记
/** *本程序为日记类 *最后修改日期为最后修改日期为2015-4-27 */package calenda;导入java.io.file; import java.io.fileinputstream; import java.io.fileOutputstream; import java.io.objectInputStream; import java.io.objectOutputStream; import Java.io.serializable;导入javax.swing.joptionpane;公共类日记实现序列化{ /** *数据域 * /// private String fileName;私人字符串主题;私有字符串内容; //含参构造方法public Diary(字符串文件名,字符串主题,字符串内容){if(them.length()== 0){ ; } else if(content.length()== 0){joptionpane.showmessagedialog(null,“'把开心的不开心的都尽情写下吧!”); } else {file calendardiaryfile = new file(“ c:/calendar/diary”);如果(!calendardiaryfile.exists()){calendardiaryfile.mkdirs(); } this.fileName =“ c:/calendar/diary/“+fileName+”。dat'; this.theme =主题; this.content = content; }} public void write()抛出异常{file file = new file(filename); FileOutputStream fos = new FileOutputStream(file); ObjectOutputStream OOS = new ObjectOutputStream(fos); oos.writeObject(this); oos.close(); } public Diary read()抛出异常{file file = new file(filename); FileInputStream fis = new FileInputStream(file); ObjectInputStream ois = new ObjectInputStream(FIS);日记D =(日记)ois.ReadObject(); ois.close();返回d; } / ** * get()方法 * @return * / public String getTheme(){return this.theme; } public String getContent(){return this.content; } /** * set()方法 * @param评论 * /}thread_keepdiary.java
/** *备忘录线程 *用于单击标签时可以存储日记 *目前只考虑年月日时间点,不标记具体时间点 */package calenda;导入java.awt.borderlayout; import java.awt.event.actionevent; import Java.awt.event.actionListener; import Java.io.file; import Java.nio.files.files;导入Javax.swing。*;公共类Thread_keepdiary扩展了Jframe实现Runnable {private jframe jf = this;私人jtextarea jta = new jtextarea();私人jbutton jbtsave = new jbutton(“保存”);私人jlabel jlbltitle = new jlabel(“主题”);私人jtextfield jtftitle = new jtextfield(16);私有字符串ID; public thread_keepdiary(字符串时间){jpanel jptitle = new jpanel(); jptitle.setlayout(new BorderLayout()); jptitle.add(jlbltitle,borderlayout.west); jptitle.add(jtftitle,borderlayout.center); jta.setlinewrap(true); jta.setWrapStyleWord(true); JSCrollpane JSP =新JSCrollpane(JTA); jsp.sethorizontalscrollbarpolicy(jscrollpane.horizontal_scrollbar_never); this.id = time; jbtsave.addactionListener(new ActionListener(){@Override public void actionPerformed(actionEvent arg0){// todo auto-generated方法stub strip them them them them = jtftitle.getText()。 d_today =新日记(id,content); )}}}); this.setTitle(“备忘录”+id); this.add(JSP,borderlayout.center); this.add(jptitle,borderlayout.north);此。 this.setsize(500,500); this.setLocationRelativeto(null); this.setDefaultClosePoration(dispose_on_close); } @Override public void run(){this.setVisible(true); }}}thread_mottosparkle.java
包装日历;导入javax.swing.jlabel;公共类Thread_mottosparkle实现Runnable {private jlabel jlbl; public thread_mottosparkle(jlabel jlbl){this.jlbl = jlbl; } @Override public void run(){字符串content = jlbl.getText(); int l = content.length(); int index = 0; while(true){jlbl.setText(content.substring(0,index));尝试{thread.sleep(250); } catch(exception ex){ex.printstacktrace(); } index ++; if(index ==(l+1))index = 0; }}}}thread_scandiary.java
/***查看日记线程编写*/package calenda;导入java.awt.borderlayout; import java.awt.color; import java.awt.font; import Java.ava.awt.event.ActionEvent; import Java.ava.ava.awt.event.actional.actionl.actionListener; import java.io.io.io.io.io.io.io.iot import Java.io java.io java.io java.io java.io java.io .fileInputStream; import Java.io.ObjectInputStream;导入javax.swing。公共类Thread_scandiary扩展了JFRAME实现Runnable { / ** *声明变量区 * /私有静态最终long serialversionuid = 1l; //日历数据库存放路径私有字符串路径=“ c:/calendar/Diary”; //日历总个数私有静态int num; //声明日历文件私有文件文件;私人文件[]日记; //声明jtable模型私有jtable jtable; //声明格言面板及标签及内容等私人jpanel jpmotto = new jpanel();私人jlabel jlblmotto = new jlabel();私有字体字体=新字体(“宋体”,font.italic,20);私有字符串wish =“唯有专注,才能让自己成功。”; //增加弹出式菜单2015-4-26私人jpopupmenu jpopupmenu1 = new jpopupmenu(); //声明菜单private jmenuitem jmiscan = new jmenuitem(“查看”);私有jmenuitem jmidelete = new jmenuitem(“删除”);私有jmenuitem jmicomment = new jmenuitem(“评论”); @Override public void run(){//尝试弹出式菜单增加子菜单jmiscan.setForeground(color.red); jmidelete.setForeground(color.Red); jmicomment.setForeground(color.Red); jpopupmenu1.add(jmiscan); jpopupmenu1.addseparator(); jpopupmenu1.add(jmidelete); jpopupmenu1.addseparator(); jpopupmenu1.add(jmicomment); / ** *智能获取文件列表 */ file = new file(path);日记= file.listfiles(); num =日记。 string [] head = {“时间”,“主题”};对象[] [] []日记=新对象[num] [2]; for(int i = 0; i <num; i ++){try {string time =日记[i] .getName()。替换first(“。dat”,“”); FileInputStream fis = new FileInputStream(日记[i]); ObjectInputStream ois = new ObjectInputStream(FIS);日记D =(日记)ois.ReadObject(); ois.close();字符串主题= d.getTheme();日记[i] [0] =时间;日记[i] [1] =主题; } catch(exception ex){ex.printstacktrace(); }} / ** *格言面板取 * / jlblmotto.setText(wish); jlblmotto.setfont(font); jlblmotto.setForeground(color.Red); jpmotto.add(jlblmotto); jpmotto.setbackground(color.White); / ** *日历列表面板区 */ final defaultTableModeL tablemodel = new DefaultTableModel(日记,头); jtable = new JTable(TableModel); jtable.setbackground(color.White); jtable.setrowheight(30); jtable.setDoubleBuffered(false); jtable.setComponentPoponPopupMenu(jpopupmenu1); jtable.setselectionMode(ListSelectionModel.Single_Selection); defaultTableCellRenderer tcr = new DefaultTableCellRenderer(); //设置table tcr.sethorizontalAlignment(swingconstants.center); //这句和上句作用一样jtable.setDefaultrenderer(object.class.class.class,tcr); JSCrollpane JSP =新JSCrollpane(JTable); /** *弹出式菜单事件监听器编写 *///查看菜单jmiscan.addactionListener(new ActionListener(){@Override public void actionPerformed(actionEvent e){if(jtable.getSelectedRow()> = 0){int Index = jtable.getSelectedRow();字符串fileName =“ c:/calendar/diary/diary”+日记[index] .getName(); ois =新的objectInputStream(FIS); DIARY D =(日记)ois.ReadObject(); “); jtextfield jtftitle = new Jtextfield(16); jpanel jptitle = new jpanel(); jptitle.setlayout(new borderlayout(); jptitle.add(jlbltitle,jlbltitle,borderlaylayout.west.west.west) ); jta.setLineWrap(true); jta.setWrapStyleWord(true); JScrollPane jsp=new JScrollPane(jta); jsp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); jtfTitle.setText(d.getTheme()); jta.setText(d .getContent()); jf.setTitle(“日记”+日记[index] .getName()。替换first(“。dat”,“”)); JF.Add(JSP,Borderlayout.center); JF.Add(jptitle,borderlayout.north); JF.Setsize(400,400); JF.SetLocationRelativeto(null); jf.setDefaultClosePeration(dispose_on_close); jf.setvisible(true); } catch(exception ex){ex.printstacktrace(); }} else {joptionpane.showMessageDialog(null,“ 请先选中一个日记!”); }}}); //删除菜单jmidelete.addactionListener(new ActionListener(){@Override public void actionPerformed(actionEvent e){if(jtable.getSelectedRow()> = 0) /日历/日记/“+日记[index] .getName(); file file = new file(fileName); int option = joptionpane.showconfirmdialog(null,“ null,“你确定要删除日记”+日记[index] .getName() +“?”;(ipect == joptionpane.yes_option){file.delete(); else {}} else {joptionpane.showmessagedialog(null,“ 请先选中一个日记!”); / ** *主框架布局 */ this.Add(JSP,BorderLayout.Center); this.add(jpmotto,borderlayout.south); this.setsize(600,500); this.setDefaultClosePoration(dispose_on_close); this.setLocationRelativeto(null); this.settitle(“日记列表”); this.setvisible(true);新线程(new thread_mottosparkle(jlblmotto))。start(); }}}thread_showenglish.java
包装日历;导入Java.awt.Color; import Java.awt.font; import Java.io.bufferedReader; import Java.io.filereader; import Java.io.lineNumberreader; import Java.security.security.security.securer.securerandom; import Java.util.random; import java.util.random;导入javax.swing.jlabel; public Class thread_showenglish instrument runnable {private static jlabel jlbl = new jlabel();字体字体= new font(“�������……font.bold,18); public thread_showenglish(jlabel jlbl){this.jlbl = jlbl; jlbl.setForeground(color.magenta); jlbl.setfont(font); } @Override public void run(){// todo自动生成的方法stub int count = 0;尝试{字符串file =“ c:/calendar/learning/english_word.txt”; BufferedReader Input = new BufferedReader(new FileReader(file)); while(input.readline()!= null){count ++; } input.close(); int [] word = new int [count]; Securerandom Random = new SecureRandom(); for(int i = 0; i <count; i ++){word [i] = random.nextint(count); } int index = 0; thread.sleep(1000); while(true){bufferedReader input1 = new BufferedReader(new FileReader(file));字符串content =“”; int line = 0; while((content = input1.readline())!= null){if(line == word [index]){jlbl.settext(content); } line ++; } if(index == count-1)index = 0;否则索引++;螺纹sleep(3500); }} catch(exception ex){ex.printstacktrace(); }}}}以上所述就是本文的全部内容了,希望大家能够喜欢。