演示图
演示图
Calendarapp.java
Paketkalenda; importieren java.awt.borderLayout; import Java.awt.color; import Java.awt.flowlayout; Import Java.awt.font; import Java.awt.gridLayout; Import Java.awt.Event.ActionEvent; Import Java.awt.Event.Event.Event.Event.Event.Event.Event.Event.Event.Event.Event.Event.Event.Event.Event. .ActionListener; import Java.awt.event.mouseeEvent; import Java.awt.event.mousElistener; Import Java.io.file; Import Java.Text.SimpledateFormat; Import Java.util.Calendar; Import Java.util.date; Import; java.util.gregoriancalendar; import Java.util.locale; importieren 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.swings; javax.swing.border.titledBorder; CalendarApp im öffentlichen Klassen erweitert JFrame {Private Calendarpanel Calendarpanel = New Calendarpanel (); private static jlabel jlbllearn = new Jlabel ("开始准备记单词"); private string versionid = "欢迎使用版本 1.0.20150427"; private jlabel jlblversionId = new JLabel (VersionID); Privat Jbutton JBTPRIOR = new Jbutton ("←"); Privat Jbutton JBTNEXT = new Jbutton ("→"); Private Jbutton JBTDIARY = New Jbutton ("写日记"); Private Jbutton JBTSCandiary = New Jbutton ("看日记"); privates statisches Int -Jahr; 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.white); JBTSCandiary.Setbackground (color.white); / * * 给四个按钮添加鼠标事件 , 使其更加炫酷 */// 一、后退按钮 JBTPRIOR.AddMousElistener (New Mouselistener () {@Override public void mouseclicked (mouseeEvent arg0) {// Todo auto-generierter Methode stub} @Override public void mausented (mouseEvent arg0) {// todo automatisch generierte Methode Stub JBTPRIOR.SETFOREGRORGE (color.green); setforenground (Color.Black); // 二、前进按钮 JBTNEXT.AddMouselistener (New Mouselistener () {@Override public void mouseclicked (mouseevent arg0) {// todo automatisch generierte Methode Stub} @Override public void mouEnt (mousevent arg0) {// todo auto-gento-gernerated Methode Stub JBTNEXT.SETFOREGRORGE (color.green); // automatisch generierte Methode Stub} @Override public void mousesereased (MouseEvent arg0) {// Todo Auto-Generated-Methode Stub}}); // 三、写日记按钮 JBTDiary.AddMousElistener (New Mouselistener () {@Override public void mouseclicked (MouseEvent arg0) {// todo auto-generierte Methode Stub} @Override public void mouEnented (mousevent arg0) {// todo auto- auto- auto- generierte Methode Stub JBTDIARY.SETFOREGRORGE (color.green); {// Todo automatisch generierter Methode Stub} @Override public void mouSerEst (mouEeEvent arg0) {// Todo Auto-Generated-Methode Stub}}); // 四、看日记按钮 JBTSCandiary.AddMouselistener (New Mouselistener () {@Override public void mouseclicked (MouseeEvent arg0) {// todo auto-generierte Methode Stub} @Override Public void mouEnented (mousevent arg0) {// todo auto- auto- auto- auto- auto- auto- generierte Methode Stub JBTSCandiary.Setforenground (color.green); {// Todo automatisch generierter Methode Stub} @Override public void mouSerEst (mouEeEvent arg0) {// Todo Auto-Generated-Methode 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 (Kalender, BorderLayout.Center); jpcalendar.add (jpbuttons, BorderLayout.South); / ** * 添加背单词模块 */ jpanel jplearn = new Jpanel (new FlowLayout ()); JPlearn.SetBorder (neuer Titel ("开心背单词"); jplearn.add (jlbllearn); jplearn.setbackground (color.white); / ** * 添加版本号信息 */ jpanel jpversionId = new Jpanel (new FlowLayout ()); Schriftart = neuer Schrift ("宋体", font.plain, 4); jpversionId.setFont (Schriftart); 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.setDefaultCloseOperation (exit_on_close); this.setvisible (true); jBTSCandiary.AddactionListener (new ActionListener () {@Override public void actionPerformed (actionEvent e) {neuer Thread (neuer Thread_Scandiary ()). start ();}}); JBTDIARY.AddactionListener (new ActionListener () {@Override public void actionPerformed (actionEvent e) {// 获取本地系统时间 SimpledateFormat df = new SimpleDateFormat ("yyyy-mm-hhh-mm-ss"); // 设置日期 设置日期格式 String Time = df.format (neuer Datum ()); JBTPRIOR.ADDACTACTIONSLISTENER (new ActionListener () {@Override public void actionPerformed (actionEvent e) {// Todo automatisch generierte Methode Stub int currentMonth = calendarpanel.getMonth (); if (currentMonth == 0) {calenders ; JBTNEXT.AddactactionListener (new ActionListener () {@Override public void actionPerformed (actionEvent e) {// Todo automatisch generierte Methode Stub int currentMonth = calendarpanel.getMonth (); if (currentMonth == 11) {calenders.setyear (++ Jahr); } public static void main (String [] args) löst unterbrochene Verfahren aus. ) .init (); }} Kalender.java
/** * 本程序功能是进行日历主面板布局 */Paketkalenda; importieren java.awt.borderLayout; import Java.awt.color; Import Java.awt.font; Import Java.awt.GridLayout; Import java.awt.event.mouseevent; importieren java.awt.event.mouselistener; import Java.text Java.text .DateFormatsymbols; Import Java.Text.SimpledateFormat; Import Java.util.Calendar; Import Java.util.Gregoriancalendar; Import Java.util.locale; Javax.swing importieren.*; import Javax.swing.border.LineBorder; Calendarpanel der öffentlichen Klasse erweitert JPanel { / ** * 声明数据变量 * / private statische endgültige lange Serialversionuid = 1L; Private Jlabel Jlbleheader = new Jlabel ("", Jlabel.Center); Private Jlabel [] Jlblday = new Jlabel [49]; Privatkalender Kalender = neuer Gregoriancalendar (); Private int year0 = Calendar.get (Kalender.YEAR); private int monon0 = calendar.get (Kalender.month); private int tay0 = calendar.get (Calendar.day_of_month); privat int monat; privates Int -Jahr; privater Int -Tag; private jpanel jpdays = new jpanel (neuer gridlayout (0,7)); Font font1 = new font ("宋体", font.italic, 20); Font font2 = neue Schriftart ("宋体", font.bold, 26); Schriftart font3 = neue Schriftart ("宋体", font.bold, 30); public Calendarpanel () {// 设置日历头部件以及日期标签的背景色为白色 jlblHeader.setbackground (color.white); jpdays.setbackground (color.white); // 声明每个标签 für (int i = 0; i <49; i ++) {jlblday [i] = new Jlabel (); Jlblday [i] .setBorder (neuer Lineborder (color.light_gray, 1)); Jlblday [i] .Sethorizontalalignment (Jlabel.Right); Jlblday [i] .setverticalInignment (jlabel.top); } calendar = new Gregoriancalendar (); Monat = calendar.get (Calendar.month); Jahr = calendar.get (Kalender.YEAR); Day = Calendar.get (Calendar.date); // 更新日历 UpdateCalendar (); ShowHeader (); showdays (); // 添加到主面板 this.setLayout (neuer 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.setforenground (color.Blue); JLBLHeader.SetFont (font3); } private void showDaynames () {DateFormatsymbols dfs = new DateFormatsymbols (Locale.china); String Daynames [] = dfs.getweekdays (); für (int i = 0; i <7; i ++) {jlblday [i] .setText (DayNames [i+1]); JLBLAY [i] .setforenground (color.blue); Jlblday [i] .Sethorizontalalignment (Jlabel.Center); Jlblday [i] .setFont (font2); jpdays.add (jlblday [i]); }} public void showDays () {jpdays.removeall (); showDaynames (); int startdayofmonth = calendar.get (calendar.day_of_week); Kalender clonecalendar = (Kalender) Kalender.Clone (); clonecalendar.add (Kalender.Date, -1); int daysinprecedingmonth = clonecalendar.getActualMaximum (Calendar.day_of_month); für (int i = 0; i <farbendayofmonth-1; i ++) {jlblday [i+7] .setforenground (color.light_gray); Jlblday [i+7] .Sethorizontalalignment (Jlabel.Center); jlblday [i+7] .setText (DaysInrecedingMonth-StartingdayOfmonth+2+i+""); jlblday [i+7] .setfont (font1); jpdays.add (jlblday [i+7]); } int Daysincurrentmonth = Calendar.getActualMaximum (Calendar.day_of_month); für (int i = 1; i <= daynincurrentmonth; i ++) {if (i == tag0 && Jahr == Jahr0 && Monat == Monat0) {jlblday [i-2+startdayofmonth+7] .setforenground (color.red); JLBLAY [I-2+Anfangstagesofmonth+7] .Sethorizontalalignment (JLabel.Center); JLBLAY [I-2+Anfangsdayofmonth+7] .setText (i+""); JLBLAY [I-2+Startdayofmonth+7] .setfont (font2); jpdays.add (jlblday [I-2+Anfangsdaymonth+7]); } else {jlblday [i-2+startdayofmonth+7] .setforecround (color.darkgray); JLBLAY [I-2+Anfangstagesofmonth+7] .Sethorizontalalignment (JLabel.Center); JLBLAY [I-2+Anfangsdayofmonth+7] .setText (i+""); JLBLAY [I-2+Startdayofmonth+7] .Setfont (font1); jpdays.add (jlblday [I-2+Anfangsdaymonth+7]); }} int j = 1; für (int i = taysincurrentmonth-1+Anfangsdayofmonth+7; i%7! = 0; i ++) {jlblday [i] .setforenground (color.light_gray); Jlblday [i] .Sethorizontalalignment (Jlabel.Center); Jlblday [i] .setText (j +++""); Jlblday [i] .setFont (font1); jpdays.add (jlblday [i]); } jpdays.repaint (); } public void UpdateCalendar () {Calendar.set (Calendar.year, Jahr); Calendar.set (Calendar.month, Monat); Calendar.set (Kalender.Date, 1); Monat = calendar.get (Calendar.month); Jahr = calendar.get (Kalender.YEAR); Day = Calendar.get (Calendar.date); } public int getMonth () {Return Month; } public int getyear () {Rückgabejahr; } public void setmonth (int monat) {this.month = Monat; UpdateCalendar (); ShowHeader (); showdays (); } public void setyear (int Jahr) {this.year = Jahr; UpdateCalendar (); ShowHeader (); showdays (); }}Diary.java
/** * 本程序为日记类 * 最后修改日期为 2015-4-27 */Package Calenda; importieren java.io.file; import java.io.fileinputstream; import java.io.filoutputstream; import Java.io.objectinputStream; Import Java.io.objectputStream; Import Java.io.io.serializable; import Javax.swing.joptionpane; Public Class Diary implementiert serialisierbare { /** * 数据域 * /// 私有变量 private String -Dateiname; privates String -Thema; private String -Inhalte; // 含参构造方法 public doyry (String -Dateiname, String -Thema, String -Inhalt) {if (thema.length () == 0) {joptionpane.showmessagedialog (null, "无论心情如何 , 总得有个主题吧!") ; } else if (content.length () == 0) {joptionpane.showMessagedialog (null, "把开心的不开心的都尽情写下吧!"); } else {Datei calendardiaryFile = neue Datei ("c:/calendar/diary"); if (! calendardiaryFile.exists ()) {calendardiaryFile.mkdirs (); } this.filename = "C:/Kalender/Tagebuch/"+Dateiname+". DAT"; this.theme = Thema; this.content = content; }} public void write () löst Ausnahme aus {Datei Datei = new Datei (Dateiname); FileOutputStream fos = new FileOutputStream (Datei); ObjectOutputStream OOS = New ObjectOutputStream (FOS); oos.writeObject (this); OOS.CLOSE (); } public doyry read () löst Ausnahme aus {Datei Datei = new Datei (Dateiname); FileInputStream fis = new FileInputStream (Datei); ObjectInputStream OIS = New ObjectInputStream (FIS); Tagebuch d = (Tagebuch) ois.ReadObject (); ois.close (); Rückkehr D; } / ** * 变量 get () 方法 * @return * / public String gettheme () {return this.theme; } public String getContent () {return this.content; } /** * 变量 set () 方法 * @param comment * /}thread_keepDiary.java
/** * 备忘录线程 * 用于单击标签时可以存储日记 * 目前只考虑年月日时间点 , 不标记具体时间点 */Packungskalenda; importieren java.awt.borderLayout; import Java.awt.event.ActionEvent; Import Java.awt.event.ActionListener; Import Java.io.file; Import Java.nio.file.files; Javax.swing importieren.*; public class Thread_keepDiary erweitert JFrame implementiert 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); private String -ID; public Thread_keepDiary (String -Zeit) {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 = new JScrollPane (JTA); jsp.sethorizontalscrollbarpolicy (jScrollpane.horizontal_ScrollBar_Never); this.id = Zeit; JBTSAVE.AddactionListener (new ActionListener () {@Override public void actionPerformed (actionEvent arg0) {// Todo automatisch generierte Methode Stub String thema = jtftitle.getText (). trim (); String content = jta.getText (); Diyry; Diyry D_TODAY = neues Diary (ID, Thema, Inhalt); );}}}); 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
Paketkalenda; import Javax.swing.jlabel; public class thread_mottosparkle implements 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; while (true) {jlbl.setText (content.substring (0, index)); try {thread.sleep (250); } catch (Ausnahme ex) {ex.printstacktrace (); } Index ++; if (index == (l+1)) index = 0; }}}thread_scandiary.java
/*** 查看日记线程编写*/Package Calenda; Import Java.awt.BorderLayout; Import Java.awt.Color; Import Java.awt.font; Import Java.awt.event.ActionEvent; Import Java.awt.event.ActionListener; Import Java.io.file; Import Java.io import Java.io import Java.io importieren; FileInputStream; import Java.io.objectinputStream; Javax.swing importieren. öffentliche Klasse Thread_Scandiary erweitert JFrame implementiert runnable { / ** * 声明变量区 * / private statische endgültige long serialversionuid = 1l; // 日历数据库存放路径 private String path = "C:/Kalender/Tagebuch"; // 日历总个数 Private statische int num; // 声明日历文件 private Dateidatei; private Datei [] Tagebuch; // 声明 jtable 模型 private jtable jtable; // 声明格言面板及标签及内容等 private jpanel jpmotto = new jpanel (); private jlabel jlblmotto = new Jlabel (); private Schriftart = Neue Schriftart ("宋体", font. ititalic, 20); private String wish = "唯有专注 , 才能让自己成功。"; // 增加弹出式菜单 2015-4-26 Private JpopupMenu jpopupMenu1 = new JpopupMenu (); // 声明菜单 Private JMenuitem JMISCan = New JMenuitem ("查看"); Private JMenuitem JMidelete = new JMenuitem ("删除"); Private JMenuitem JMicomment = new JMenuitem ("评论"); @Override public void run () {// 尝试弹出式菜单增加子菜单 jMiscan.setforenground (color.red); JMidelete.setforenground (color.red); JMICOMMENT.SETFOREGRORGE (color.red); JPOPUPMENU1.ADD (JMISCAN); jpopupMenu1.addSesparator (); JPOPUPMENU1.ADD (JMIDELETE); jpopupMenu1.addSesparator (); JPOPUPMENU1.ADD (JMICOMMENT); / ** * 智能获取文件列表 */ file = new Datei (Pfad); Diary = File.Listfiles (); Num = Tagebuch.Length; String [] head = {"时间", "主题"}; Objekt [] [] Diary = neues Objekt [num] [2]; für (int i = 0; i <num; i ++) {try {String time = Diary [i] .GetName (). ersetzensfirst ("dat", ""); FileInputStream fis = new FileInputStream (Tagebuch [i]); ObjectInputStream OIS = New ObjectInputStream (FIS); Tagebuch d = (Tagebuch) ois.ReadObject (); ois.close (); String thema = d.gottheme (); Tagebuch [i] [0] = Zeit; Tagebuch [i] [1] = Thema; } catch (Ausnahme ex) {ex.printstacktrace (); }} / ** * 格言面板取 * / jlblmotto.setText (wish); jlblmotto.setfont (font); jlblmotto.setforenground (color.red); jpmotto.add (jlblmotto); jpmotto.setbackground (color.white); / ** * 日历列表面板区 */ Finale defaultTablemodel Tablemodel = new DefaultTablemodel (Tagebuch, Kopf); JTable = new JTable (Tablemodel); jtable.setbackground (color.white); jtable.setrowHeight (30); jtable.setDoubleBuffened (falsch); jtable.setComponentPopupMenu (JPOPUPMENU1); jTable.SetSelectionMode (ListSelectionModel.single_Selection); DefaultTableCellRenderer tcr = new DefaultTableCellRenderer (); // 设置 Tabelle 内容居中 tcr.sethorizontalalignment (SwingConstants.Center); // 这句和上句作用一样 jtable.setDefauLtrenderer (Objekt.Class, TCR); JScrollPane jsp = new JscrollPane (jTable); /** * 弹出式菜单事件监听器编写 */// 查看菜单 jmiscan.addactionListener (new ActionListener () {@Override public void actionPerformed (actionEvent e) {if (jtable.getSelectedRow ()> = 0) {Int Index = jTable.GetSelectedRow (); ois = neuer objektinputstream (fis); "); Jtextfield jtftitle = new Jtextfield (16); jpanel jptitle = new jpanel (); ); .GetContent ()); Jf.Settitle ("日记"+Tagebuch [Index] .GetName (). Ersatzfirst ("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 (true); } catch (Ausnahme ex) {ex.printstacktrace (); }} else {joptionpane.showMessagedialog (null, "请先选中一个日记!"); }}}); // 删除菜单 JMidelete.AddactactionListener (new ActionListener () {@Override public void ActionPerformed (actionEvent e) {if (jtable.getSelectedrow ()> = 0) {int index = jtable.getSelectedRow (); String FileName = "c: /Calendar/Diary/"+Diary [Index] .GetName (); Datei Datei = Neue Datei (Dateiname); int option = joptionpane.showConfirmaLDialog (NULL," 你确定要删除日记 "+Diary [Index] .getName () +"?"); sonst {}} else {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 (true); neuer Thread (neuer Thread_Mottosparkle (jlblmotto)). start (); }}thread_showenglish.java
Paketkalenda; importieren java.awt.color; import Java.awt.font; import Java.io.buffenedReader; Import Java.io.Filereader; Import Java.io.LINENUMBERREADER; Import Java.Security.securerandom; import Javax.swing.jlabel; public class thread_showenglish implements runnable {private static jlabel jlbl = new JLabel (); Schriftart = Neue Schriftart ("��� ו", font.bold, 18); public thread_showenglish (jlabel jlbl) {this.jlbl = jlbl; jlbl.setforenground (color.magenta); jlbl.setfont (Schriftart); } @Override public void run () {// Todo automatisch generierte Methode Stub int count = 0; try {string file = "c: /calendar/learning/english_word.txt"; BufferedReader input = new bufferedReader (New FileReader (Datei)); while (input.readline ()! = null) {count ++; } input.close (); int [] word = new int [count]; Securerandom random = new Securerandom (); für (int i = 0; i <count; i ++) {Word [i] = random.nextint (count); } int index = 0; Thread.sleep (1000); while (true) {bufferedReader input1 = new bufferedReader (neuer FileReader (Datei)); String content = ""; int line = 0; while ((content = input1.readline ())! } Zeile ++; } if (index == count-1) index = 0; sonst index ++; Thread.sleep (3500); }} catch (Ausnahme ex) {ex.printstacktrace (); }}}以上所述就是本文的全部内容了 , 希望大家能够喜欢。 希望大家能够喜欢。