Java课程设计报告记事本.docx
《Java课程设计报告记事本.docx》由会员分享,可在线阅读,更多相关《Java课程设计报告记事本.docx(31页珍藏版)》请在冰豆网上搜索。
![Java课程设计报告记事本.docx](https://file1.bdocx.com/fileroot1/2022-10/28/2b36be47-b98a-4104-91bb-d20ccc96904f/2b36be47-b98a-4104-91bb-d20ccc96904f1.gif)
Java课程设计报告记事本
Java课程设计报告
专业:
班级:
姓名:
学号:
系部:
目录2
正文3
一、设计内容和要求3
二、设计思路4
五、设计体会小结……………………………………………………21
正文
Java文档编辑器是一个允许修改DefaultStyledDocument对象的应用程序。
这些对象用于管理Swing文本组件(例如JTextPane和JTextArea)的内容。
JTextPane用于显示DefaultStyledDocument的内容。
通过改变与DefaultStyledDocument相关联的Style对象,能够改变DefaultStyledDocument在JTextPane中的显示方式。
此应用程序也能够将DefaultStyledDocument存储到磁盘上和读入以前存储的DefaultStyledDocument。
读、写、操纵DefaultStyledDocument的所有选项都可以通过使用菜单项来实现。
当这些菜单项被选中时,它们生成事件。
使用ActionListener,ItemListener,UndoableEditListener和MenuDragMouseListener对象来处理这些事件。
要求通过课程设计,使学生将掌握的Java语言基本知识应用于实践中,在实际练习中加深对Java语言各方面的知识和概念的理解,掌Java程序设计中编程方法、编程思想,深入理解Java语言在实际中的应用。
要求学生动手上机编程,掌握Java程序设计思想和设计方法,设计实现一个简单Java文档编辑器,该编辑器由打开文件、新建文件、保存、复制、剪切、粘贴、撤销、删除等基本文本操作功能组件组成,有能力和时间的同学还可以设计实现如查找、时间、设置字体颜色、格式等功能,右键菜单响应,快捷键等功能,进一步加强自己的编程能力和编程思想。
二、设计思路
本程序设计主要大体流程为:
开始,启动MainFunction的主函数main(),调用Loading方法启动dluThread线程登陆界面,dluThread线程结束后调用MiniText()方法,调用initTextPane(方法初始化面板,调用initMenu()方法初始化菜单,调用initAboutDialog()方法初始化关于对话框,调用initToolBar()方法初始化工具栏,调用initRightKey()方法初始化右键设置,启动runtime线程创建动态时间按钮,点击文件菜单里的退出按钮或关闭窗口退出。
基本流程图如下:
图1基本流程图
本Java文本编辑器功能设计如下:
图2基本功能图
三、具体实现
3.1类设计
主要有四个类:
1.类MiniText,包括initTextPane方法初始化面板,initMenu()方法初始化菜单,initAboutDialog()方法初始化关于对话框,initToolBar()方法初始化工具栏,initRightKey()方法初始化右键设置,等方法。
类成员如下:
2.类Loading(实现登陆)
类成员如下:
3.类runtime(实现时间同步)
类成员如下:
4.类MainFunction(包含主函数)
类成员如下:
3.2主要功能代码实现
(1).登陆界面
classLoadingextendsJWindowimplementsRunnable{
ThreaddluThread=null;
privateJProgressBarprogress;
publicLoading(){
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));//设置光标为等待状态
JPaneldlu=newJPanel(newBorderLayout());
URLurl=getClass().getResource("/images/loading.jpg");
if(url!
=null){
dlu.add(newJButton(newImageIcon(url)),BorderLayout.CENTER);
}
progress=newJProgressBar(1,100);
progress.setStringPainted(true);
progress.setBorderPainted(true);
progress.setBackground(Color.white);
progress.setForeground(Color.green);
dlu.add(progress,BorderLayout.SOUTH);
setContentPane(dlu);//设置窗口属性为登陆面板属性
Dimensionscreen=getToolkit().getScreenSize();
pack();//显示登陆界面
setLocation(screen.width/4,screen.height/4);//设置登陆界面始终在屏幕中间显示
}
publicvoidstart(){
//this.toFront();
dluThread=newThread(this);
dluThread.start();}
publicvoidrun(){
show();
try{
for(inti=0;i<100;i++){
Thread.sleep(100);
progress.setValue(progress.getValue()+1);
progress.setString("欢迎进入迷你编辑,请稍后......"+i+"%");}}
catch(Exceptionex){
ex.printStackTrace();}
dispose();//关闭登陆界面}}
(2).时间标签
classruntimeextendsJButtonimplementsRunnable{
Threaddatetime=null;
publicruntime(){}
publicvoidrun(){
for(;;){
//java.util.Datetimeer=newjava.util.Date();
Calendarnow=Calendar.getInstance();
intyear1=now.get(Calendar.YEAR);
intmonth1=now.get(Calendar.MONTH);
intday1=now.get(Calendar.DAY_OF_MONTH);
inthour1=now.get(Calendar.HOUR);
intminute1=now.get(Calendar.MINUTE);
intsec=now.get(Calendar.SECOND);
setText(year1+"年"+month1+"月"+day1+"日"+hour1+":
"+minute1+":
"+sec);
//System.out.println(now.get(Calendar.DAY_OF_MONTH)-60);
try{
Thread.currentThread().sleep(1000);
}catch(InterruptedExceptione){}}}}
(3).右键的实现:
voidinitRightKey(){
filepopup=newJPopupMenu();
uundo=newJMenuItem("撤消(U)");
uundo.setMnemonic('U');
ccut=newJMenuItem("剪切(T)");
ccut.setMnemonic('T');
ccopy=newJMenuItem("复制(C)");
ccopy.setMnemonic('C');
ppaste=newJMenuItem("粘贴(V)");
ppaste.setMnemonic('V');
ddelete=newJMenuItem("删除(D)");
ddelete.setMnemonic('D');
sselectall=newJMenuItem("全选(A)");
sselectall.setMnemonic('A');
filepopup.add(uundo);
filepopup.addSeparator();
filepopup.add(ccut);
filepopup.add(ccopy);
filepopup.add(ppaste);
filepopup.add(ddelete);
filepopup.addSeparator();
filepopup.add(sselectall);
uundo.addActionListener(action);
ccut.addActionListener(action);
ccopy.addActionListener(action);
ppaste.addActionListener(action);
ddelete.addActionListener(action);
sselectall.addActionListener(action);
text.addMouseListener(newMouseAdapter(){
publicvoidmousePressed(MouseEventevent){
checkForTriggerEvent(event);
}
publicvoidmouseReleased(MouseEventevent){
checkForTriggerEvent(event);
}publicvoidcheckForTriggerEvent(MouseEventevent){
if(event.isPopupTrigger()){
filepopup.show(event.getComponent(),event.getX(),event.getY());
}}});}
(4).打开、保存、复制、粘贴、撤销等功能事件响应实现:
//事件处理
ActionListeneraction=newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{JMenuItemmi=(JMenuItem)e.getSource();
Stringid=mi.getText();
if(id.equals("新建")){
Datedate=newDate();
text.setText(date.toString());
file=null;
}elseif(id.equals("打开...")){
if(file!
=null)
filechooser.setSelectedFile(file);//为用户选择文件提供了一种简单的机制
intreturnVal=filechooser.showO