演示圖
演示圖
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(); }}}}以上所述就是本文的全部內容了,希望大家能夠喜歡。