演示图
演示图
Calendarapp.java
تقويم الحزمة ؛ استيراد java.awt.borderlayout ؛ استيراد java.awt.color ؛ استيراد java.awt.flowlayout ؛ استيراد java.awt.font ؛ استيراد java.awt.gridlayout . java.util.gregoriancalendar ؛ استيراد java.util.locale ؛ استيراد javax.swing.japplet ؛ import javax.swing.jbutton ؛ استيراد javax.swing.jcombobox ؛ استيراد javax.swing.jframe ؛ استيراد javax.swing.jlabel ؛ استيراد javax.swing.jpanel ؛ javax.swing.swingabilities ؛ استيراد javax.swing.border.titledborder ؛ يمتد Calendarapp من الطبقة العامة JFrame {التقويم الخاص للتقويم التقويم = تقويم جديد () ؛ private static Jlabel Jlbllearn = New Jlabel ("开始准备记单词") ؛ private string versionid = "欢迎使用版本 1.0.20150427" ؛ Private Jlabel JlBlversionId = New JLabel (versionId) ؛ Private Jbutton JbtPrior = New Jbutton ("←") ؛ Private Jbutton Jbtnext = New JButton ("→") ؛ Private Jbutton JBTDiary = New JButton ("写日记") ؛ Private JButton JBTscandiary = New JButton ("看日记") ؛ سنة ثابتة خاصة ؛ public void init () {year = calendarpanel.getyear () ؛ Calendarpanel.setbackground (color.white) ؛ / ** * 添加功能性按钮到日历面板下方 */ jpanel jpbuttons = new jpanel (new FlowLayout ()) ؛ // 设置按钮背景色为白色 jbtprior.setbackground (color.white) ؛ jbtnext.setbackground (color.white) ؛ jbtdiary.setbackground (color.hite) ؛ jbtscandiary.setbackground (color.white) ؛ /* * 给四个按钮添加鼠标事件,使其更加炫酷 */ //一、后退按钮 jbtPrior.addMouseListener(new MouseListener(){ @Override public void mouseClicked(MouseEvent arg0) { // TODO Auto-generated method Cub} Override public void mouseentered (mouseevent arg0) {// todo method muse jbtprior.setforeground (color.green) ؛ setForeground (color.black) ؛ // 二、前进按钮 jbtnext.addmouseListener (new mouselistener () {Override public void mouseclicked (mouseevent arg0) {// todo todo method mouse} override public void mouseentered (mouseevent arg0) {to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to to Method jbtnext.setforeground (color.green) ؛ // todo method method method method} override public void mouserelest (mouseevent arg0) {// todo tuto method method}}}) ؛ // 三、写日记按钮 jbtdiary.addmouseListener (new mouselistener () {Override public void mouseclicked (mouseevent arg0) {// todo todo method mouse} override public void mouseenter (mouseevent arg0) {// todo auto- طريقة إنشاء jbtdiary.setforeground (color.green) ؛ {// todo method method method method} override public void mouserelest (mouseevent arg0) {// todo method method method}}) ؛ // 四、看日记按钮 jbtscandiarial.addmouselistener (new mouselistener () {Override public void mouseclicked (mouseevent arg0) {// todo method method mouse} override public void mouseentered (mouseevent arg0) {// to auto auto- تم إنشاؤها في jbtscandiary.setfore {// todo method method method method} override public void mouserelest (mouseevent arg0) {// todo method method method}}) ؛ 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 (جديد بعنوان ("开心背单词")) ؛ jplearn.add (jlbllearn) ؛ jplearn.setbackground (color.hite) ؛ / ** * 添加版本号信息 */ jpanel jpversionid = new jpanel (new FlowLayout ()) ؛ font font = new font ("宋体" ، font.plain ، 4) ؛ jpversionid.setfont (الخط) ؛ jpversionid.add (jlblversionid) ؛ jpversionid.setbackground (color.hite) ؛ / ** * 容器面板 , 合并记单词与版本号模块 */ 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.hite) ؛ this.setsize (700 ، 500) ؛ this.setLocationRelativeto (null) ؛ this.settitle ("多功能日历") ؛ this.setDefaultCloseOperation (exit_on_close) ؛ this.setVisible (صحيح) ؛ jbtscandiary.addActionListener (New ActionListener () {Override public void actionperformed (ActionEvent e) {new thread (new thread_scandiary ()). start () ؛}}) ؛ jbtdiary.addActionListener (new ActionListener () {Override public void actionperformed (actionevent e) {// 获取本地系统时间 simpledateformat df = new SimpleDateFormat ("yyyy-mm-dd-hh-mm-ss") ؛ // 设置日期格式 string time = df.format (date ()) ؛ jbtprior.addActionListener (new ActionListener () {Override public void actionperformed (actionevent e) {// todo method method method into int currentmonth = calendarpanel.getMonth () ؛ if (currentMonth == 0) {calendarpanel.setyear (year) ؛ jbtnext.addActionListener (new ActionListener () {Override public void actionperformed (actionevent e) {// todo method method method into int currentmonth = calendarpanel.getMonth () ؛ if (currentMonth == 11) {calendarpanel.setyear (++ السنة) ؛ } رميات الفراغ الثابتة العامة (سلسلة [] args) interruptedException {// todo method method method swingutabilities.invokelater (new runnable () {Override public void run () {// todo method method method method calendarapp ( ) .init () ؛ }} Calendarpanel.java
/** * 本程序功能是进行日历主面板布局 */Package Calenda ؛ استيراد java.awt.borderlayout ؛ استيراد java.awt.color ؛ استيراد java.awt.font .dateformatsymbols ؛ import java.text.simpleDateFormat ؛ import java.util.calendar ؛ import java.util.greasiancalend ؛ import java.util.locale ؛ استيراد javax.swing.*؛ استيراد javax.swing.border.lineborder ؛ تقويم الطبقة العامة يمتد jpanel { / ** * 声明数据变量 * / private Static Final Long SerialVersionuid = 1L ؛ Private Jlabel Jlblheader = New Jlabel ("" ، Jlabel.Center) ؛ Private Jlabel [] JlblDay = New Jlabel [49] ؛ التقويم التقويم الخاص = غريغوريانكالندر () جديد ؛ private int year0 = calendar.get (calendar.year) ؛ private int month0 = calendar.get (calendar.month) ؛ private int day0 = calendar.get (calendar.day_of_month) ؛ الشهر الخاص العام الخاص يوم خاص jpanel jpdays = new jpanel (new GridLayout (0،7)) ؛ font font1 = new font ("宋体" ، font.italic ، 20) ؛ font font2 = new font ("宋体" ، font.bold ، 26) ؛ font font3 = new font ("宋体" ، font.bold ، 30) ؛ التقويم العام () {// 设置日历头部件以及日期标签的背景色为白色 jlblheader.setbackground (color.white) ؛ jpdays.setbackground (color.hite) ؛ // 声明每个标签 for (int i = 0 ؛ i <49 ؛ i ++) {jlblday [i] = new jlabel () ؛ JlblDay [i] .SetBorder (New LineBorder (color.light_gray ، 1)) ؛ jlblday [i] JlblDay [i] .SetVerticalIngmenment (jlabel.top) ؛ } Calendar = new GregorianCalendar () ؛ الشهر = calendar.get (Calendar.Month) ؛ السنة = calendar.get (calendar.year) ؛ اليوم = calendar.get (calendar.date) ؛ // 更新日历 updatecalendar () ؛ Showheader () ؛ أيام العرض () ؛ // 添加到主面板 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) ؛ string header = sdf.format (calendar.getTime ()) ؛ jlblheader.settext (header) ؛ jlblheader.setforeground (color.blue) ؛ jlblheader.setfont (font3) ؛ } private void showdayNames () {dateFormatsyMbols dfs = new DateFormatsyMbols (locale.china) ؛ string daynames [] = dfs.getWeekDays () ؛ لـ (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 startDayOfMonth = calendar.get (calendar.day_of_week) ؛ التقويم clonecalendar = (التقويم) calendar.clone () ؛ clonecalendar.add (Calendar.Date ، -1) ؛ int daysInprecedingMonth = clonecalendar.getActualMaximum (calendar.day_of_month) ؛ لـ (int i = 0 ؛ i <shileddayofmonth-1 ؛ i ++) {jlblday [i+7] .SetForeGround (color.light_gray) ؛ JlblDay [i+7] .SethorizontalAlignment (jlabel.center) ؛ JlblDay [i+7] .settext (daysInprecedingMonth-startingdayofmonth+2+i+"") ؛ JlblDay [i+7] .setfont (font1) ؛ jpdays.add (jlblday [i+7]) ؛ } int daysincurrentMonth = calendar.getActualMaximum (calendar.day_of_month) ؛ لـ (int i = 1 ؛ i <= daysIncurrentMonth ؛ i ++) {if (i == day0 && year == year0 && month == month0) {jlblday [i-2+startDayOfMonth+7]. JlblDay [I-2+STARTDAYOFMONTH+7] JlblDay [I-2+STARTDAYOFMONTH+7] .Settext (i+"") ؛ JlblDay [I-2+STARTDAYOFMONTH+7] .SETFONT (FONT2) ؛ jpdays.add (JlblDay [i-2+spartdayOfMonth+7]) ؛ } آخر {jlblday [i-2+spartmayOfMonth+7] .SetForeground (color.darkgray) ؛ JlblDay [I-2+STARTDAYOFMONTH+7] JlblDay [I-2+STARTDAYOFMONTH+7] .Settext (i+"") ؛ JLBlDay [I-2+STARTDAYOFMONTH+7] .SETFONT (FONT1) ؛ jpdays.add (JlblDay [i-2+spartdayOfMonth+7]) ؛ }} int j = 1 ؛ لـ (int i = daysIncurrentMonth-1+STARTDAYOFMONth+7 ؛ i ٪ 7! = 0 ؛ i ++) {jlblday [i] jlblday [i] JlblDay [i] .settext (j +++"") ؛ JlblDay [i] .setfont (font1) ؛ jpdays.add (jlblday [i]) ؛ } jpdays.repaint () ؛ } public void updatecalendar () {calendar.set (calendar.year ، year) ؛ Calendar.set (Calendar.month ، month) ؛ Calendar.set (Calendar.Date ، 1) ؛ الشهر = calendar.get (Calendar.Month) ؛ السنة = calendar.get (calendar.year) ؛ اليوم = calendar.get (calendar.date) ؛ } public int getMonth () {return month ؛ } public int getyear () {return year ؛ } public void setMonth (int month) {this.month = month ؛ updatecalendar () ؛ Showheader () ؛ أيام العرض () ؛ } public void setyear (int year) {this.year = year ؛ updatecalendar () ؛ Showheader () ؛ أيام العرض () ؛ }}يوميات
/** * 本程序为日记类 * 最后修改日期为 2015-4-27 */Package Calenda ؛ استيراد java.io.file ؛ استيراد java.io.fileInputStream ؛ استيراد java.io.fileOutputStream ؛ استيراد java.io.objectinputStream ؛ استيراد java.io.objectoututputstream ؛ استيراد java.io.serializable ؛ استيراد javax.swing.joptionpane ؛ مذكرات الطبقة العامة تنفذ مسلسل { /** * 数据域 * /// 私有变量 اسم ملف السلسلة الخاص ؛ موضوع السلسلة الخاصة ؛ محتوى سلسلة خاصة ؛ // 含参构造方法 Public Diary (اسم ملف السلسلة ، موضوع السلسلة ، محتوى السلسلة) {if (theme.length () == 0) {joptionpane.showmessagedialog (null ، "无论心情如何 , 总得有个主题吧!") ؛ } آخر if (content.length () == 0) {joptionpane.showmessagedialog (null ، "把开心的不开心的都尽情写下吧!") ؛ } آخر {file calendardAriaryFile = new file ("C:/Calendar/Diary") ؛ if (! calendardiaryFile.exists ()) {calendardiariaryfile.mkdirs () ؛ } this.filename = "c:/calendar/diary/"+filename+". dat" ؛ this.theme = السمة ؛ this.content = المحتوى ؛ }} public void write () rems {file file = new file (filename) ؛ fileOutputStream fos = new FileOutputStream (ملف) ؛ ObjectOutputStream OOS = جديد ObjectOutputStream (FOS) ؛ OOS.WriteObject (هذا) ؛ oos.close () ؛ } Diary READ () يلقي استثناء {file file = ملف جديد (اسم الملف) ؛ fileInputStream fis = جديد fileInputStream (ملف) ؛ ObjectInputStream OIS = New ObjectInputStream (FIS) ؛ يوميات D = (يوميات) OIS.ReadObject () ؛ ois.close () ؛ العودة د ؛ } / ** * 变量 get () 方法 * regurn * / public string getTheMe () {return this.theme ؛ } السلسلة العامة getContent () {return this.content ؛ } /** * 变量 set () 方法 * param comment * /}thread_keepdiary.java
/** * 备忘录线程 * 用于单击标签时可以存储日记 * 目前只考虑年月日时间点 , 不标记具体时间点 */package Calenda ؛ استيراد java.awt.borderlayout ؛ استيراد java.awt.event.actionevent ؛ استيراد java.awt.event.actionlistener ؛ استيراد java.io.file ؛ استيراد java.nio.file.files ؛ استيراد javax.swing.*؛ الفئة العامة thread_keepdiary يمتد JFrame الأدوات Runnable {private jframe jf = this ؛ Private JTextarea JTA = New JTextarea () ؛ Private Jbutton jbtsave = New Jbutton ("保存") ؛ Private Jlabel Jlbltitle = New JLabel ("主题") ؛ Private JTextfield JTftitle = New JTextfield (16) ؛ معرف السلسلة الخاص ؛ public thread_keepDiary (وقت السلسلة) {jpanel jptitle = new JPanel () ؛ jptitle.setLayout (New BorderLayout ()) ؛ jptitle.add (jlbltitle ، borderlayout.west) ؛ jptitle.add (jtftitle ، borderlayout.center) ؛ JTA.SetLineWrap (صواب) ؛ jta.setWrapStyleword (true) ؛ JScrollpane JSP = New JScrollpane (JTA) ؛ JSP.SethorizontalsCrollBarPolicy (jscrollpane.horizontal_scrollbar_never) ؛ this.id = الوقت ؛ jbtsave.addActionListener (new ActionListener () {Override public void actionperformed (ActionEvent arg0) {// todo todo method method string theme = jtftitle.gettext (). d_today = مذكرات جديدة ، المحتوى) ؛ ) ؛ this.settitle ("备忘录"+id) ؛ this.add (jsp ، borderlayout.center) ؛ this.add (jptitle ، borderlayout.north) ؛ this.add (jbtsave ، borderlayout.south) ؛ this.setsize (500،500) ؛ this.setLocationRelativeto (null) ؛ this.setDefaultCloseOperation (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 () {string content = jlbl.getText () ؛ int l = content.length () ؛ int index = 0 ؛ بينما (صحيح) {jlbl.settext (content.substring (0 ، index)) ؛ حاول {thread.sleep (250) ؛ } catch (استثناء ex) {ex.printStackTrace () ؛ } index ++ ؛ if (index == (l+1)) index = 0 ؛ }}}thread_scandiary.java
/*** 查看日记线程编写*/حزمة التقويم ؛ استيراد java.awt.borderlayout ؛ استيراد java.awt.color ؛ استيراد java.awt.font .fileInputStream ؛ import java.io.objectInputStream ؛ استيراد javax.swing.*؛ import javax.swing.table.defaulttableCellRenderer ؛ import javax.swing.table.defaulttablemodel ؛ import javax.swing.table.jtableder ؛ الطبقة العامة thread_scandiary يمتد JFrame الأدوات Runnable { / ** * 声明变量区 * / خاص ثابت طويل الطويل المسلسل = 1L ؛ // 日历数据库存放路径 private string path = "C:/Calendar/Diary" ؛ // 日历总个数 خاص int int num ؛ // 声明日历文件 ملف الملف الخاص ؛ ملف خاص [] يوميات ؛ // 声明 jtable 模型 private jtable jtable ؛ // 声明格言面板及标签及内容等 private jpanel jpmotto = new jpanel () ؛ Private Jlabel JlblMotto = New Jlabel () ؛ Font Font = new Font ("宋体" ، font.italic ، 20) ؛ سلسلة خاصة Wish = "唯有专注 , 才能让自己成功。" ؛ // 增加弹出式菜单 2015-4-26 private jpopupmenu jpopupmenu1 = new JPopupMenu () ؛ // 声明菜单 private jmenuitem jmiscan = new jmenuitem ("查看") ؛ Private 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 = ملف جديد (path) ؛ Diary = file.listfiles () ؛ num = diary.length ؛ String [] head = {"时间" ، "主题"} ؛ كائن [] [] يوميات = كائن جديد [num] [2] ؛ لـ (int i = 0 ؛ i <num ؛ i ++) {try {string time = diary [i] .getName (). replistfirst (". dat" ، "") ؛ FileInputStream fis = new FileInputStream (Diary [i]) ؛ ObjectInputStream OIS = New ObjectInputStream (FIS) ؛ يوميات D = (يوميات) OIS.ReadObject () ؛ ois.close () ؛ موضوع السلسلة = d.getTheMe () ؛ يوميات [i] [0] = الوقت ؛ يوميات [i] [1] = السمة ؛ } catch (استثناء ex) {ex.printStackTrace () ؛ }} / ** * 格言面板取 * / jlblmotto.settext (wish) ؛ Jlblmotto.setfont (font) ؛ jlblmotto.setforeground (color.red) ؛ jpmotto.add (jlblmotto) ؛ jpmotto.setbackground (color.hite) ؛ / ** * 日历列表面板区 */ Final DefaultTableModel tableModel = New DefaultTableModel (Diary ، Head) ؛ jtable = new jtable (tableModel) ؛ jtable.setbackground (color.hite) ؛ jtable.setrowheight (30) ؛ jtable.setDoubleBuffered (false) ؛ jtable.setComponentPopUpMenu (jpopupmenu1) ؛ Jtable.SetSelectionMode (ListSelectionModel.single_selection) ؛ DefaultTableCellRenderer TCR = defaultTableCellRenderer () ؛ // 设置 الجدول 内容居中 tcr.SethorizontalAlignment (swingconstants.center) ؛ // 这句和上句作用一样 jtable.setDefaultRenderer (object.class ، tcr) ؛ JScrollpane JSP = New JScrollPane (JTable) ؛ /** * 弹出式菜单事件监听器编写 *////查看菜单 jmiscan.addActionListener (new ActionListener () {Override public void actionperformed (actionevent e) {if (jtable.getselectedRow ()> = 0) {int index = jtable.getselected () ؛ OIS = ObjectInputStream (FIS) ؛ ") ؛ Jtextfield jtftitle = new Jtextfield (16) ؛ Jpanel jptitle = new jpanel () ؛ jptitle.setlayout (new borderlayout ()) ؛ ) .getContent ()) ؛ jf.settitle ("日记"+diary [index] .getName (). replistfirst (". dat" ، "")) ؛ JF.Add (JSP ، BorderLayout.Center) ؛ JF.Add (jptitle ، borderlayout.north) ؛ Jf.Setsize (400،400) ؛ jf.setlocationRelativeto (null) ؛ jf.setDefaultCloseOperation (dispose_on_close) ؛ JF.SetVisible (صواب) ؛ } catch (استثناء ex) {ex.printStackTrace () ؛ }} آخر {joptionpane.showmessagedialog (null ، "请先选中一个日记!") ؛ }}}) ؛ // 删除菜单 jmidelete.addActionListener (new ActionListener () {Override public void actionperformed (actionevent e) {if (jtable.getselectedRow ()> = 0) {int index = jtable.getselectedRow () ؛ string filename = "c: /Calendar/Diary/"+Diary [Index] .getName () ؛ file file = file new (filename) ؛ int Option = joptionpane.showConfirmDialog (null ،" 你确定要删除日记 "+diary [index] .getName () +"?") ؛ آخر {}} آخر {joptionpane.showmessagedialog (null ، "请先选中一个日记!") ؛ / ** * 主框架布局 */ this.add (jsp ، borderlayout.center) ؛ this.add (jpmotto ، borderlayout.south) ؛ this.setsize (600 ، 500) ؛ this.setDefaultCloseOperation (dispose_on_close) ؛ this.setLocationRelativeto (null) ؛ this.settitle ("日记列表") ؛ this.setVisible (صحيح) ؛ مؤشر ترابط جديد (Thread_mottosparkle الجديد (JlblMotto)). start () ؛ }}thread_showenglish.java
تقويم الحزمة ؛ استيراد java.awt.color ؛ استيراد java.awt.font ؛ استيراد java.io.bufferedreader استيراد javax.swing.jlabel ؛ الطبقة العامة thread_showenglish تنفذ Runnable {private static jlabel jlbl = new jlabel () ؛ Font font=new Font("���ו",Font.BOLD,18); public thread_showenglish (jlabel jlbl) {this.jlbl = jlbl ؛ jlbl.setforeground (color.magenta) ؛ JLBL.SetFont (الخط) ؛ } Override public void run () {// todo method method method tuto count count = 0 ؛ حاول {string file = "c: /calendar/learning/english_word.txt" ؛ إدخال BufferEdReader = جديد BufferEdReader (New FileReader (file)) ؛ بينما (input.ReadLine ()! = null) {count ++ ؛ } input.close () ؛ int [] word = new int [count] ؛ SecurerAndom عشوائي = جديد SecurerAndom () ؛ لـ (int i = 0 ؛ i <count ؛ i ++) {word [i] = random.nextint (count) ؛ } int index = 0 ؛ thread.sleep (1000) ؛ بينما (صحيح) {bufferedReader input1 = جديد bufferedReader (جديد fileReader (ملف)) ؛ سلسلة المحتوى = "" ؛ خط int = 0 ؛ بينما ((content = input1.ReadLine ())! = null) {if (line == word [index]) {jlbl.settext (content) ؛ } line ++ ؛ } if (index == count-1) index = 0 ؛ else index ++ ؛ thread.sleep (3500) ؛ }} catch (استثناء ex) {ex.printStackTrace () ؛ }}}以上所述就是本文的全部内容了 , 希望大家能够喜欢。