演示图
演示图
calendarapp.java
package calenda; import 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.actionlistener; import java.awt.event.mouseevent; 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; 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 extends jframe{ private calendarpanel calendarpanel=new calendarpanel(); 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("看日记"); private static int year; 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(mouseevent arg0) { // todo auto-generated method stub } @override public void mouseentered(mouseevent arg0) { // todo auto-generated method stub jbtprior.setforeground(color.green); } @override public void mouseexited(mouseevent arg0) { // todo auto-generated method stub jbtprior.setforeground(color.black); } @override public void mousepressed(mouseevent arg0) { // todo auto-generated method stub } @override public void mousereleased(mouseevent arg0) { // todo auto-generated method stub } }); //二、前进按钮 jbtnext.addmouselistener(new mouselistener(){ @override public void mouseclicked(mouseevent arg0) { // todo auto-generated method stub } @override public void mouseentered(mouseevent arg0) { // todo auto-generated method stub jbtnext.setforeground(color.green); } @override public void mouseexited(mouseevent arg0) { // todo auto-generated method stub jbtnext.setforeground(color.black); } @override public void mousepressed(mouseevent arg0) { // todo auto-generated method stub } @override public void mousereleased(mouseevent arg0) { // todo auto-generated method stub } }); //三、写日记按钮 jbtdiary.addmouselistener(new mouselistener(){ @override public void mouseclicked(mouseevent arg0) { // todo auto-generated method stub } @override public void mouseentered(mouseevent arg0) { // todo auto-generated method stub jbtdiary.setforeground(color.green); } @override public void mouseexited(mouseevent arg0) { // todo auto-generated method stub jbtdiary.setforeground(color.black); } @override public void mousepressed(mouseevent arg0) { // todo auto-generated method stub } @override public void mousereleased(mouseevent arg0) { // todo auto-generated method stub } }); //四、看日记按钮 jbtscandiary.addmouselistener(new mouselistener(){ @override public void mouseclicked(mouseevent arg0) { // todo auto-generated method stub } @override public void mouseentered(mouseevent arg0) { // todo auto-generated method stub jbtscandiary.setforeground(color.green); } @override public void mouseexited(mouseevent arg0) { // todo auto-generated method stub jbtscandiary.setforeground(color.black); } @override public void mousepressed(mouseevent arg0) { // todo auto-generated method stub } @override public void mousereleased(mouseevent arg0) { // todo auto-generated method 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 titledborder("开心背单词")); jplearn.add(jlbllearn); jplearn.setbackground(color.white); /** * 添加版本号信息 */ jpanel jpversionid=new jpanel(new flowlayout()); font font=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.setdefaultcloseoperation(exit_on_close); this.setvisible(true); 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(new date()); new thread(new thread_keepdiary(time)).start(); } }); jbtprior.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { // todo auto-generated method stub int currentmonth=calendarpanel.getmonth(); if(currentmonth==0) { calendarpanel.setyear(year); year--; } calendarpanel.setmonth((currentmonth-1)%12); } }); jbtnext.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent e) { // todo auto-generated method stub int currentmonth=calendarpanel.getmonth(); if(currentmonth==11) { calendarpanel.setyear(++year); } calendarpanel.setmonth((currentmonth+1)%12); } }); } public static void main(string[] args) throws interruptedexception { // todo auto-generated method stub swingutilities.invokelater(new runnable(){ @override public void run() { // todo auto-generated method stub new calendarapp().init(); new thread(new thread_showenglish(jlbllearn)).start(); } }); } }
calendarpanel.java
/** * 本程序功能是进行日历主面板布局 */ package calenda; import java.awt.borderlayout; import java.awt.color; import java.awt.font; import java.awt.gridlayout; import java.awt.event.mouseevent; import java.awt.event.mouselistener; import java.text.dateformatsymbols; import java.text.simpledateformat; import java.util.calendar; import java.util.gregoriancalendar; import java.util.locale; import javax.swing.*; import javax.swing.border.lineborder; public class calendarpanel extends jpanel { /** * 声明数据变量 */ private static final long serialversionuid = 1l; private jlabel jlblheader=new jlabel(" ",jlabel.center); private jlabel[] jlblday=new jlabel[49]; private calendar calendar=new gregoriancalendar(); private int year0=calendar.get(calendar.year); private int month0=calendar.get(calendar.month); private int day0=calendar.get(calendar.day_of_month); private int month; private int year; private int day; private 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); 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].sethorizontalalignment(jlabel.right); jlblday[i].setverticalalignment(jlabel.top); } calendar=new gregoriancalendar(); month=calendar.get(calendar.month); year=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); 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(); for(int i=0;i<7;i++) { jlblday[i].settext(daynames[i+1]); jlblday[i].setforeground(color.blue); jlblday[i].sethorizontalalignment(jlabel.center); jlblday[i].setfont(font2); jpdays.add(jlblday[i]); } } public void showdays() { jpdays.removeall(); showdaynames(); int startingdayofmonth=calendar.get(calendar.day_of_week); calendar clonecalendar=(calendar)calendar.clone(); clonecalendar.add(calendar.date, -1); int daysinprecedingmonth=clonecalendar.getactualmaximum(calendar.day_of_month); for(int i=0;i<startingdayofmonth-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); for(int i=1;i<=daysincurrentmonth;i++) { if(i==day0&&year==year0&&month==month0) { jlblday[i-2+startingdayofmonth+7].setforeground(color.red); jlblday[i-2+startingdayofmonth+7].sethorizontalalignment(jlabel.center); 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+startingdayofmonth+7].setforeground(color.darkgray); jlblday[i-2+startingdayofmonth+7].sethorizontalalignment(jlabel.center); 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].sethorizontalalignment(jlabel.center); 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); month=calendar.get(calendar.month); year=calendar.get(calendar.year); day=calendar.get(calendar.date); } public int getmonth() { return month; } public int getyear() { return year; } public void setmonth(int month) { this.month=month; updatecalendar(); showheader(); showdays(); } public void setyear(int year) { this.year=year; updatecalendar(); showheader(); showdays(); } }
diary.java
/** * 本程序为日记类 * 最后修改日期为2015-4-27 */ package calenda; import java.io.file; import java.io.fileinputstream; import java.io.fileoutputstream; import java.io.objectinputstream; import java.io.objectoutputstream; import java.io.serializable; import javax.swing.joptionpane; public class diary implements serializable { /** * 数据域 */ //私有变量 private string filename; private string theme; private string content; //含参构造方法 public diary(string filename,string theme,string content) { if(theme.length()==0) { joptionpane.showmessagedialog(null, "无论心情如何,总得有个主题吧!"); } else if(content.length()==0) { joptionpane.showmessagedialog(null, "把开心的不开心的都尽情写下吧!"); } else { file calendardiaryfile=new file("c:/calendar/diary"); if(!calendardiaryfile.exists()) { calendardiaryfile.mkdirs(); } this.filename="c:/calendar/diary/"+filename+".dat"; this.theme=theme; this.content=content; } } public void write() throws exception { file file=new file(filename); fileoutputstream fos = new fileoutputstream(file); objectoutputstream oos = new objectoutputstream(fos); oos.writeobject(this); oos.close(); } public diary read() throws exception { file file=new file(filename); fileinputstream fis=new fileinputstream(file); objectinputstream ois = new objectinputstream(fis); diary d=(diary) ois.readobject(); ois.close(); return d; } /** * 变量get()方法 * @return */ public string gettheme() { return this.theme; } public string getcontent() { return this.content; } /** * 变量set()方法 * @param comment */ }
thread_keepdiary.java
/** * 备忘录线程 * 用于单击标签时可以存储日记 * 目前只考虑年月日时间点,不标记具体时间点 */ package calenda; import java.awt.borderlayout; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.io.file; import java.nio.file.files; import javax.swing.*; public class thread_keepdiary extends jframe implements 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 time) { 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=time; jbtsave.addactionlistener(new actionlistener() { @override public void actionperformed(actionevent arg0) { // todo auto-generated method stub string theme=jtftitle.gettext().trim(); string content=jta.gettext(); diary d_today=new diary(id,theme,content); try { d_today.write(); joptionpane.showmessagedialog(null, "保存成功!"); jf.dispose(); } catch(exception e) { e.printstacktrace(); } } }); 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
package calenda; 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(exception 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.fileinputstream; import java.io.objectinputstream; import javax.swing.*; import javax.swing.table.defaulttablecellrenderer; import javax.swing.table.defaulttablemodel; import javax.swing.table.jtableheader; public class thread_scandiary extends jframe implements runnable{ /** * 声明变量区 */ private static final long serialversionuid = 1l; //日历数据库存放路径 private string path="c:/calendar/diary"; //日历总个数 private static int num; //声明日历文件 private file file; private file[] diary; //声明jtable模型 private jtable jtable; //声明格言面板及标签及内容等 private jpanel jpmotto=new jpanel(); private jlabel jlblmotto=new jlabel(); private font font=new font("宋体",font.italic,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.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); diary=file.listfiles(); num=diary.length; string[] head={" 时间 "," 主题 "}; object[][] diary=new object[num][2]; for(int i=0;i<num;i++) { try{ string time=diary[i].getname().replacefirst(".dat", ""); fileinputstream fis=new fileinputstream(diary[i]); objectinputstream ois = new objectinputstream(fis); diary d=(diary) ois.readobject(); ois.close(); string theme=d.gettheme(); diary[i][0]=time; diary[i][1]=theme; } 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(diary,head); jtable=new jtable(tablemodel); jtable.setbackground(color.white); jtable.setrowheight(30); jtable.setdoublebuffered(false); jtable.setcomponentpopupmenu(jpopupmenu1); jtable.setselectionmode(listselectionmodel.single_selection); defaulttablecellrenderer tcr = new defaulttablecellrenderer();// 设置table内容居中 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.getselectedrow(); string filename="c:/calendar/diary/"+diary[index].getname(); file file=new file(filename); try { fileinputstream fis=new fileinputstream(file); objectinputstream ois = new objectinputstream(fis); diary d=(diary) ois.readobject(); ois.close(); jframe jf=new jframe(); jtextarea jta=new jtextarea(); jlabel jlbltitle=new jlabel("主题"); jtextfield jtftitle=new jtextfield(16); 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); jtftitle.settext(d.gettheme()); jta.settext(d.getcontent()); jtftitle.seteditable(false); jta.seteditable(false); jf.settitle("日记 "+diary[index].getname().replacefirst(".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(exception ex) { ex.printstacktrace(); } } else { 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=new file(filename); int option=joptionpane.showconfirmdialog(null, "你确定要删除日记"+diary[index].getname()+"?"); if(option==joptionpane.yes_option) { file.delete(); tablemodel.removerow(index); swingutilities.updatecomponenttreeui(jtable); joptionpane.showmessagedialog(null, "删除成功!"); } else { } } 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); new thread(new thread_mottosparkle(jlblmotto)).start(); } }
thread_showenglish.java
package calenda; import java.awt.color; import java.awt.font; import java.io.bufferedreader; import java.io.filereader; import java.io.linenumberreader; import java.security.securerandom; import java.util.random; import javax.swing.jlabel; public class thread_showenglish implements 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(font); } @override public void run() { // todo auto-generated method stub int count=0; try { string 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)); string content=""; int line=0; while((content=input1.readline())!=null) { if(line==word[index]) { jlbl.settext(content); } line++; } if(index==count-1) index=0; else index++; thread.sleep(3500); } } catch(exception ex) { ex.printstacktrace(); } } }
以上所述就是本文的全部内容了,希望大家能够喜欢。
如对本文有疑问, 点击进行留言回复!!
Mybatis PersistenceException异常:Error building SqlSession The error may exist in SQL Mapper Configur
MyBatis——动态SQL语句——if标签和where标签复合使用
网友评论