Java课程设计--文本编辑器
Java课程设计--文本编辑器
淮海工学院计算机工程学院课程设计报告设计名称:面向对象课程设计选题名称:文本编辑器的设计与实现姓名:俞凯学号: 2011123094 专业班级:中新软111 系(院):国际学院设计时间:2013.6.17~2013.6.30设计地点:软件实验室、教室zhuti zt=new zhuti();}class zhuti extends Frame implements ActionListener{Button btn;Label lab;zhuti(){setLayout(null);btn=new Button("确定");lab=new Label("这是一个简单的文本编辑器!");add(btn);add(lab);btn.addActionListener(this);setBounds(200,200,250,150);setVisible(true);lab.setBounds(20 ,60,220,30);lab.setFont(new Font("楷体",Font.BOLD,16));lab.setBackground(Color.cyan);btn.setBounds(100,100,50,30);btn.setBackground(Color.cyan);}public void actionPerformed(ActionEvent e){if(e.getSource()==btn){dispose();}}}对于帮助中关于主题部分的实现,我另构建了一个Frame框架,主要是由一个标签及一个按钮构成,由标签输出“这是一个简单的文本编辑器!”,按钮用dispose()方法实现退出功能。
1、调试分析:(1)关于打开和保存我运用了文件对话框, filedialog_save和filedialog_load以及文件输入输出流来实现,新建功能我选用了area.setText(null)方法.(2)对于剪贴,粘贴,复制的实现则用public void removeUpdate(DocumentEvent e)及public void insertUpdate(DocumentEvent e).(3)背景的运用也是调用了颜色对话框,需引用import javax.swing.JcolorChooser包用Color newColor=JColorChooser.showDialog(this,"调色板",area.getBackground())方法;(4)至于字体功能的实现,则是先创建一个下拉列表Choice list,再实现对它的监听list.addItemListener(this), 最后用public void itemStateChanged(ItemEvent e)方法实现,需注意的是这种方法的实现只对javax.swing包中的组件有效,对于java.awt包中的组件,系统则是采取默认的字体名称.2、用户使用说明:软硬件要求:软件方面:Java开发环境硬件方面:JDK软件抑或是Eclipse软件对硬件没有很高的要求。
面向对象课程设计报告-文本编辑器
《面向对象程序设计》课程设计报告题目:java文本编辑器院(系):专业班级:学生姓名:学号:指导教师:20 14 年 12 月 29 日至20 15 年 1 月 9 日面向对象程序设计课程设计任务书目录1需求与总体设计 (4)1.1总体功能图 (4)1.2 总体设计思路 (4)(1)文件菜单 (4)(2)编辑菜单 (4)(3)右键菜单 (4)1.3 总体模块图 (5)1.4简要类图 (5)2详细设计 (6)2.1各类的功能及关键代码设计和类图表示 (6)(1)首先创建一个公共的类名为Bjq (6)(2)创建一个空的菜单条并添加两个菜单项(文件、编辑) (7)(3)先设计一个匿名内部类,为文件、编辑菜单添加其它下拉子菜单 (7)(4)右键快捷菜单的字体子菜单的创建 (8)(5)为鼠标创建监听器。
用于用鼠标点击右键时出现快捷菜单:复制、粘贴、字体大小、字体颜色。
(9)(6)为窗体添加监听器 (9)(7)设计main方法:为整个程序的开始提供了入口 (9)2.2程序流程图 (10)2.3 详细类图 (12)3编码实现 (12)3.1程序实现代码 (12)4系统测试 (19)4.1错误处理 (19)4.2主要的测试截图 (19)1. 程序运行界面 (19)2. 编辑菜单及其复制粘贴功能 (20)3. 右键菜单及其功能效果 (21)4. 文件菜单及其功能界面 (23)总结 (26)1需求与总体设计1.1总体功能图图1.01.2 总体设计思路在本程序中,设计了一个菜单栏和文本内容区。
要想记事本完成需求分析中相应的功能,还必须添加事件监听器。
事件监听器不仅要添加在菜单栏和内容输入区,还需加在容器中。
本程序中Act Listener实现了Action Listener接口,用来监听并处理所有菜单项和内容输入区为事件源的事件。
另外,还用来Window Listener来监听处理容器关闭触发的事件,Window Listener继承了Windows Adapter类并覆盖了Windows Closing方法。
JAVA程序设计综合实验报告(文本编辑器)
JDesktopPane desk;
FirstWindow(String s){
setTitle(s);
setSize(800,600);
setLocation(120,120);
setVisible(true);
GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
MyInternalFrame internalFrame=(MyInternalFrame)desk.getSelectedFrame();
JTextArea text=internalFrame.getJTextArea();
String str;
op1.setVisible(true);
try{
item1_New.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK ));
item1_Open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK ));
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
//剪切
item2_Cut.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
addInternalFrameListener(new InternalFrameAdapter(){
制作一个文本编辑器java课程设计报告
《Java语言程序设计》课程设计报告设计题目:制作一个文本编辑器分院:电信分院班级:姓名:学号:指导教师:黄建华实验地点:三教机六课设时间:2009-12-20——2009-12-25二OO九年十二月二十五日《Java语言程序设计课程设计》目录一、设计思路 (2)二、设计过程 (3)三、测试结果 (12)四、心得体会 (13)五、程序代码 (14)一、设计思路(一)设计概念要制作一个文本编辑器,首先得理清思路,要做一个什么样的文本编辑器,做成的编辑器要求要实现哪些功能,要实现这些功能分别需要用到什么方法以及怎样组织编辑器的框架结构等等问题。
现把我的设计思路简要介绍如下:1、明确设计要求首先要创建了一个窗体,标题为“×××设计的文本编辑器”,设计要求是要编辑文件和编辑这两个菜单项,要求在文件菜单项上添加新建、打开、保存、退出四个下拉子菜单,要求当用户单击新建时就可以新建一个空白文档;当单击打开时可以从已有的目录下打开需要打开的文本文件,在原有文件中可以选择要打开的文件;当单击保存时可以出现保存的路径,选择自己要保存到的路径将文件保存到指定的文件夹中;单击退出菜单时退出文件的下拉菜单。
在编辑菜单下的子菜单复制,可以进行对文本的复制。
在文本区内要求当单击鼠标右键时可以弹出菜单,要求有两个子菜单为复制和字体,通过单击字体菜单可以实现对字体改变。
而且在窗体的右上方有三个按钮可以实现最小化、最大化、和关闭。
而且用户也可以根据自己的需要改变窗体的大小。
2、确定设计思路即设计步骤(必须想到要用到哪几个方面的程序、包、方法、以及基本的程序语言)(1)创建一个窗体,包括构造一个文本域为编辑器各种功能的实现提供一个伸展平台;(2)新建一个空的菜单条,然后添加菜单项(文件菜单和编辑菜单);(3)设计程序在菜单项下添加子菜单,文本菜单对应新建、打开、保存和退出,编辑菜单包括的子菜单为复制和粘贴;(4)添加右键快捷弹出式菜单,包括复制、字体等菜单项。
java课程设计记事本
java课程设计 记事本一、课程目标知识目标:1. 学生能理解记事本软件的基本功能需求,掌握Java编程语言实现文本编辑器的基础知识。
2. 学生能掌握Java中文件I/O操作,学会如何读取和保存文件。
3. 学生了解并掌握Java事件处理机制,实现对记事本界面上各种操作(如打开、保存、复制、粘贴等)的响应。
4. 学生理解MVC设计模式,并能应用于记事本程序的设计中。
技能目标:1. 学生能够独立设计并编写出一个具备基本功能的记事本程序,实现文本的打开、编辑、保存和另存为功能。
2. 学生通过实践,提高问题分析能力,掌握运用Java编程解决问题的方法和技巧。
3. 学生能够运用所学知识,对记事本程序进行扩展,增加如查找替换、字体设置等高级功能。
情感态度价值观目标:1. 学生在课程学习过程中,培养解决问题的耐心和毅力,增强对编程学习的兴趣。
2. 学生通过小组合作完成项目,培养团队协作能力和沟通技巧。
3. 学生学会分享编程心得,树立正确的学习态度,认识到编程对个人发展和社会进步的重要性。
本课程旨在让学生通过实际操作,掌握Java编程的基础知识和技能,培养实际编程能力。
考虑到学生年级的特点,课程内容设计将注重知识点的逐步深入和实际应用,使学生在完成课程学习后,能够具备独立设计和开发简单Java应用程序的能力。
二、教学内容1. Java基础知识回顾:包括数据类型、控制结构、类与对象、继承与多态等基础概念,以教材相关章节为参考,确保学生对Java基础知识有扎实的掌握。
2. 文件I/O操作:教学文件读写的基本方法,涉及File类、InputStream和OutputStream等类的使用,对应教材中文件操作相关章节。
3. Java事件处理机制:介绍事件监听器、事件源、事件对象等概念,以及如何使用AWT和Swing库处理图形用户界面事件,参考教材中图形用户界面设计相关内容。
4. MVC设计模式:讲解模型-视图-控制器设计模式的原理和应用,引导学生将设计模式应用于记事本程序设计,与教材中设计模式章节相结合。
java课程设计报告-java课程设计
Java 课程设计报告题目:文本编辑器班级:学号:姓名:成绩:日期:年月日目录一、综合设计的目的与要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯3二、综合设计正文⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯31. 系统分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯31.1系统开发背景、开发范围、建设目标与必要性开发⋯⋯⋯⋯⋯⋯⋯⋯31.2需求分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.系统设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.1功能设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.2系统运行环境与开发工具⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯43 . 系统实施⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯4 3.1 源程序⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯43.2 .系统测试及部分截图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯12三、综合设计总结或结论⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13四、参考文献⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯13《文本编辑器》一、综合设计的目的与要求要求在学生能够较熟练使用java 程序设计语言进行软件代码的编写,同时还要具备较好的项目分析的能力,加深对相关课程基本内容的理解。
同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统的练习。
二、综合设计正文1系统分析1.1系统开发背景、开发范围、建设目标与必要性随着计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
当然对文本编辑操作仍然占据着重要地位,记事本是简单便捷的文本编辑器,可实现对文本编辑操作的基本功能。
1.2需求分析程序设计主要分为两大部分:简单 GUI 设计和程序功能设计。
通过 GUI 设计实现图形用户界面,提供图形菜单,方便用户操作。
使用Java 语言编写一个能够对输入文字进行操作,具有合理的界面,能够在界面中实现右键快捷方式,对文档内容进行编辑操作,并且能够顺利退出的程序。
文本编辑器 java课程设计实验报告 完整 预览显示不全 含全部代码
淮 海 工 学 院 计算机工程学院课程设计报告设计名称: 选题名称: 姓 名: 面向对象课程设计文本编辑器的设计与实现学号:专业班级: 系 (院) : 设计时间: 设计地点: 计算机工程学院 2010.6.21~2010.7.2 软件实验室、教室指导教师评语:成绩:签名:年 月 日面向对象课程设计报告第2页,共24页1.设计要求设计一个类似于 Windows 记事本(Notepad)的 Java 程序。
可以打开、新建、保存一个文本文件;对 选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、 查找、替换等) ;在文本中能够插入对象。
2.总体设计打开文 件保存另存为查找 红色 复制 字 体 颜 色退出编 辑蓝色剪切文 本 编 辑 器宋体绿色 粘贴字仿宋体楷体字 形粗体 斜体 常规字 号面向对象课程设计报告第3页,共24页3.详细设计JTextArea textarea;//建立文本 JRadioButtonMenuItem rbmi_red,rbmi_blue,rbmi_green;//鼠标右击改变颜色JMenuItem menuitem_copy,menuitem_cut,menuitem_paste,menuitem_seek;//复制, 剪切,粘贴 JMenuItem menuitem_song,menuitem_fang,menuitem_kai;//字体变量 JMenuItem menuitem_normal,menuitem_bold,menuitem_italic;//字形变量 JMenuItem menuitem_12,menuitem_24,menuitem_36;//字号变量 JMenuItem menuitem_exit,menuitem_infor; JPopupMenu popupmenu;//文本快捷键 JMenuItem menuitem_red,menuitem_green,menuitem_blue;//颜色变量 JDialog dialog;//调用对话框 JButton button_seek;//查找 JTextField textfield_seek; JLabel label_seek,label_infor;4.代码调试面向对象课程设计报告 程序代码: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import javax.swing.JColorChooser; import javax.swing.event.*; public class Notepad extends第4页,共24页JFrameimplementsActionListener,ItemListener,MouseListener { File file; JTextArea textarea; JRadioButtonMenuItem rbmi_red,rbmi_blue,rbmi_green;JMenuItem menuitem_copy,menuitem_cut,menuitem_paste,menuitem_seek; JMenuItem menuitem_song,menuitem_fang,menuitem_kai;//字体变量 JMenuItem menuitem_normal,menuitem_bold,menuitem_italic;//字形变量 JMenuItem menuitem_12,menuitem_24,menuitem_36;//字号变量 JMenuItem menuitem_exit,menuitem_infor; JMenuItem menuitem_zidingyi; JPopupMenu popupmenu; JMenuItem menuitem_red,menuitem_green,menuitem_blue; JDialog dialog; JButton button_seek; JTextField textfield_seek; JLabel label_seek,label_infor; String seek;public Notepad() { super("文本编辑器"); this.setSize(600,400); this.setLocation(250,150); this.setDefaultCloseOperation(HIDE_ON_CLOSE); textarea = new JTextArea();面向对象课程设计报告 Container ss=this.getContentPane();第5页,共24页JScrollPane dd=new JScrollPane(textarea); ss.add(dd); this.textarea.addMouseListener(this); this.addMenu(); this.setVisible(true); this.Dialog(); this.file = null; } public Notepad(String filename) { this(); if (filename!=null) { this.file = new File(filename); this.setTitle(filename); this.textarea.setText(this.readFromFile()); } } public Notepad(File file) { this(); if (file!=null) { this.file = file; this.setTitle(this.file.getName()); this.textarea.setText(this.readFromFile()); } } public void Dialog() { dialog=new JDialog(this,"查找",true); dialog.setLayout(new FlowLayout()); //建立对话框的方法面向对象课程设计报告 dialog.setSize(200,90); label_seek=new JLabel("关键字"); dialog.add(label_seek); textfield_seek=new JTextField(10); dialog.add(textfield_seek); button_seek=new JButton("查找"); dialog.add(button_seek); button_seek.addActionListener(this); } public void addMenu() { JMenuBar menubar = new JMenuBar(); this.setJMenuBar(menubar); JMenu menu_file = new JMenu("文件"); menubar.add(menu_file);第6页,共24页//文件菜单JMenuItem menuitem_open = new JMenuItem("打开"); menu_file.add(menuitem_open); menuitem_open.addActionListener(this); JMenuItem menuitem_save = new JMenuItem("保存"); menu_file.add(menuitem_save); menuitem_save.addActionListener(this); JMenuItem menuitem_saveas = new JMenuItem("另存为"); menu_file.add(menuitem_saveas); menuitem_saveas.addActionListener(this); menuitem_exit=new JMenuItem("退出" ); menu_file.add(menuitem_exit); menuitem_exit.addActionListener(this); JMenu menu_editor=new JMenu("编辑");//编辑菜单 menubar.add(menu_editor); menuitem_seek=new JMenuItem("查找"); menu_editor.add(menuitem_seek); menuitem_seek.addActionListener(this); menuitem_copy=new JMenuItem("复制");面向对象课程设计报告 menuitem_copy.addActionListener(this); menu_editor.add(menuitem_copy); menuitem_cut=new JMenuItem("剪切"); menu_editor.add(menuitem_cut); menuitem_cut.addActionListener(this); menuitem_paste=new JMenuItem("粘贴"); menu_editor.add(menuitem_paste); menuitem_paste.addActionListener(this);第7页,共24页JMenuItem menu_color=new JMenu("颜色");//颜色菜单 menu_editor.add(menu_color); ButtonGroup buttongroup=new ButtonGroup();rbmi_red=new JRadioButtonMenuItem("红",true); buttongroup.add(rbmi_red); menu_color.add(rbmi_red); rbmi_red.addItemListener(this); rbmi_blue=new JRadioButtonMenuItem("蓝",true); buttongroup.add(rbmi_blue); menu_color.add(rbmi_blue); rbmi_blue.addItemListener(this); rbmi_green=new JRadioButtonMenuItem("绿",true); buttongroup.add(rbmi_green); menu_color.add(rbmi_green); rbmi_green.addItemListener(this); JMenu menu_font=new JMenu("设置字体");//设置字体菜单 menubar.add(menu_font); menuitem_song=new JMenuItem("宋体"); menu_font.add(menuitem_song); menuitem_song.addActionListener(this); menuitem_fang=new JMenuItem("仿宋"); menu_font.add(menuitem_fang); menuitem_fang.addActionListener(this); menuitem_kai=new JMenuItem("楷体"); menu_font.add(menuitem_kai);面向对象课程设计报告 menuitem_kai.addActionListener(this);第8页,共24页JMenu menu_style=new JMenu("设置字形");//设置字形菜单 menubar.add(menu_style); menuitem_bold=new JMenuItem("粗体"); menu_style.add(menuitem_bold); menuitem_bold.addActionListener(this); menuitem_italic=new JMenuItem("斜体"); menu_style.add(menuitem_italic); menuitem_italic.addActionListener(this); menuitem_normal=new JMenuItem("常规"); menu_style.add(menuitem_normal); menuitem_normal.addActionListener(this); JMenu menu_size=new JMenu("设置字号"); menubar.add(menu_size); menuitem_12=new JMenuItem("12"); menu_size.add(menuitem_12); menuitem_12.addActionListener(this); menuitem_24=new JMenuItem("24"); menu_size.add(menuitem_24); menuitem_24.addActionListener(this); menuitem_36=new JMenuItem("36"); menu_size.add(menuitem_36); menuitem_36.addActionListener(this); popupmenu=new JPopupMenu(); JMenuItem menuitem_red=new JMenuItem("红色"); popupmenu.add(menuitem_red); menuitem_red.addActionListener(this); JMenuItem menuitem_green=new JMenuItem("绿色"); popupmenu.add(menuitem_green); menuitem_green.addActionListener(this); menuitem_blue=new JMenuItem("蓝色"); popupmenu.add(menuitem_blue); menuitem_blue.addActionListener(this); //快捷菜单 //设置字号菜单面向对象课程设计报告 textarea.add(popupmenu); }第 9 页,共 24 //向文本区内添加快捷菜单页public void writeToFile(String lines) { try {//写文件FileWriter fout = new FileWriter(this.file); fout.write(lines+"\r\n"); fout.close(); } catch (IOException ioex) { return; } } public String readFromFile() { try { FileReader fin = new FileReader(this.file); BufferedReader bin = new BufferedReader(fin); String aline="", lines=""; do { aline = bin.readLine(); if (aline!=null) lines += aline + "\r\n"; } while (aline!=null); bin.close(); fin.close(); return lines; } catch (IOException ioex) //读文件面向对象课程设计报告 { return null; } } public boolean openDialog() {第10页,共24页//打开对话框FileDialog filedialog = new FileDialog(this,"Open",FileDialog.LOAD); filedialog.setVisible(true); if ((filedialog.getDirectory()!=null) && (filedialog.getFile()!=null)) { this.file filedialog.getFile()); return true; } else return false; } public boolean saveDialog() { FileDialog filedialog = new FileDialog(this,"SaveAs",FileDialog.SAVE); filedialog.setFile(this.file.getName()); filedialog.setVisible(true); if ((filedialog.getDirectory()!=null) && (filedialog.getFile()!=null)) { this.file = new File(filedialog.getDirectory(), //保存对话框 = new File(filedialog.getDirectory(),filedialog.getFile()+".txt"); return true; } else return false; } public void actionPerformed(ActionEvent e) { //事件处理面向对象课程设计报告 if(e.getActionCommand()=="打开") { if (this.openDialog()) {第11页,共24页this.setTitle(this.file.getName()); this.textarea.setText(this.readFromFile()); } } if(e.getActionCommand()=="保存" && this.file!=null) { this.writeToFile(this.textarea.getText()); } if(e.getActionCommand()==" e.getActionCommand()=="另存为") { if (this.saveDialog()) { this.writeToFile(this.textarea.getText()); this.setTitle(this.file.getName()); } } if(e.getActionCommand()=="退出") { System.exit(0); } if(e.getSource()==menuitem_copy) { textarea.copy(); } if(e.getSource()==menuitem_paste) { textarea.paste(); } //编辑菜单的事件处理 保 存 " && this.file==null ||面向对象课程设计报告 if(e.getSource()==menuitem_cut) { textarea.cut(); } if(e.getSource()==menuitem_red) { textarea.setForeground(Color.red); } if(e.getSource()==menuitem_blue) { textarea.setForeground(Color.blue); } if(e.getSource()==menuitem_green) { textarea.setForeground(Color.green); } Font font=textarea.getFont(); int style=font.getStyle(); if(e.getSource()==menuitem_song) { textarea.setFont(new第12页,共24页//颜色菜单的事件处理//设置字体变量java.awt.Font("宋体",java.awt.Font.PLAIN,font.getSize())); } if(e.getSource()==menuitem_fang) { textarea.setFont(new java.awt.Font(" 仿 宋",java.awt.Font.PLAIN,font.getSize())); } if(e.getSource()==menuitem_kai) { textarea.setFont(new java.awt.Font(" 楷 体",java.awt.Font.PLAIN,font.getSize()));面向对象课程设计报告 } if(e.getSource()==menuitem_bold) { style=style^1;第13页,共24页//设置字形菜单的事件处理textarea.setFont(new java.awt.Font("",style,font.getSize())); } if(e.getSource()==menuitem_italic) { style=style^2; textarea.setFont(new java.awt.Font("",style,font.getSize())); } if(e.getSource()==menuitem_normal) { style=style^3; textarea.setFont(new java.awt.Font("",style,font.getSize())); } if(e.getSource()==menuitem_12) { textarea.setFont(new java.awt.Font(font.getName(),style,12)); } if(e.getSource()==menuitem_24) { textarea.setFont(new java.awt.Font(font.getName(),style,24)); } if(e.getSource()==menuitem_36) { textarea.setFont(new java.awt.Font(font.getName(),style,36)); } if(e.getSource()==menuitem_seek) { dialog.setVisible(true); } seek=textarea.getText(); //查找菜单项的处理事件面向对象课程设计报告 第 String tseek=textfield_seek.getText(); if(e.getSource()==button_seek) { int i=textfield_seek.getText().length(); int j=seek.indexOf(tseek); textarea.setSelectionStart(j); textarea.setSelectionEnd(i+j); textfield_seek.setText(""); } } public void itemStateChanged(ItemEvent e) { if(e.getSource()==rbmi_red) { textarea.setForeground(java.awt.Color.red); } if(e.getSource()==rbmi_blue) { textarea.setForeground(java.awt.Color.blue); } if(e.getSource()==rbmi_green) { textarea.setForeground(java.awt.Color.green); } } public void mouseClicked(MouseEvent mec) { if (mec.getModifiers()==mec.BUTTON3_MASK)14页,共24页//ItemListener 事件处理方法//鼠标处理事件popupmenu.show(textarea,mec.getX(),mec.getY()); } public void mousePressed(MouseEvent mep) public void mouseReleased(MouseEvent mer) public void mouseEntered(MouseEvent mee) { { { } } }面向对象课程设计报告 public void mouseExited(MouseEvent mex) public void mouseDragged(MouseEvent med) public static void main(String arg[]) { new Notepad("文本编辑器"); } }第 { {15 页,共 } }24页//main 方法编译代码实现各种功能:打开任意目录下一文本文件:文件目录下“另存为”功能:面向对象课程设计报告第16页,共24页编辑目录下“查找”功能:编辑目录下“复制” “剪切” “粘贴”功能:面向对象课程设计报告第17页,共24页面向对象课程设计报告第18页,共24页字体设置功能:面向对象课程设计报告第19页,共24页编辑目录下“颜色“功能:设置字型功能:面向对象课程设计报告第20页,共24页设置字号功能:面向对象课程设计报告第21页,共24页运行完毕,可关闭窗口退出程序或点击文件目录下的“退出”功能面向对象课程设计报告第22页,共24页5. 软件发布面向对象课程设计报告 首先制作 Manifest 文件,代码如下; Manifest-Version:1.0 Mani-Class: notepad Created-Boy:1.6(Sun Microsystems Inc.) 保存为 Manifest.mf,保存在 D:\java 打开 CMD 在 DOS 下生成 jar 文件:第23页,共24页D:\java\jar cmf Notepad.jar Manifest.mf notepad.class 生成 JAR 文件,双击运行。
Java实训报告书-文本编辑器
public void addmyMenu() // 菜单函数,生成菜单 { JMenuBar menubar = new JMenuBar();// 菜单栏添加 若干菜单 this.setJMenuBar(menubar); String menustr[] = { "文件", "编辑", "工具", "帮 助" };//菜单栏字符串数组 JMenu menu[] = new JMenu[menustr.length]; for (int i = 0; i < menu.length; i++) {//为菜 单栏赋值 menu[i] = new JMenu(menustr[i]); menubar.add(menu[i]); } String menuitemstr0[] = { "新建", "打开", "保 存", "另存为", "退出" };// 文件菜单中添加若干菜单项 JMenuItem menuitem0[] = new JMenuItem[menuitemstr0.length]; for (int i = 0; i < menuitem0.length; i++)
2.3
文本编辑区 监视文本内容是否改变、监听光标所在位置 数据库结构设计
文件 编辑 工具 帮助
1.程序E-R图 菜单栏
文件 新建 打开 保存 另存为 退出
编辑 剪切 复制 粘贴 帮助 帮助
关于
3
主要代码清单
3.1生成菜单栏及菜单项
在窗体初始化时,自动添加菜单及其菜单项,用于在文本编辑 器中对文本去内容进行操作,使用for语句循环生成菜单栏和 菜单项。
java实验 文本编辑器
考查报告课程名称:java实验姓名:学号:一.开发环境描述及其相关配置描述J2SDK1.6或以上版本, 程序编辑环境EditPlus,UltraEdit,或其他Java集成开发环境二.程序的模块功能描述和涉及到的关键Java API列表模块:记事本:一)、菜单1、文件:新建,打开,保存,另存为,退出2、编辑:剪切,复制,粘贴,替换,全部替换,插入文本,删除3、格式:自动换行,颜色,字体4、查找5、帮助二)、界面1、编辑区三、程序源代码(关键部分附带注释)import java.awt.*;import java.awt.event.*;import java.awt.datatransfer.*;import javax.swing.*;import java.io.*;import ng.*;public class Notepad extends JFrame{private final Color colorvalues[] ={ Color.black, Color.blue, Color.red, Color.green }; //定义颜色数组String styleNames[] = { "Bold", "Italic" };//定义风格数组String fontNames[] = { "宋体", "华文行楷", "隶书" };//字体数组String[] sizeString = new String[30];//字号数组int[] size = new int[30];//与字号数组对应的字号整数,用于设置文字大小private JRadioButtonMenuItem colorItems[], fonts[];private JCheckBoxMenuItem styleItems[];private JTextArea displayText;//定义文本编辑区private ButtonGroup fontGroup, colorGroup;//字体组,跟字色组private int style;//字体风格private JScrollPane scroll;//为文本编辑区提供滚动条private String selectText = "";//存放文本编辑区中选中的文本内容private int rowNumber = 0;private FileDialog fd = new FileDialog(this);// set up GUIpublic Notepad(){super( "记事本" );//标题//创建菜单条JMenuBar bar = new JMenuBar();setJMenuBar( bar );// 设置文件菜单及其菜单项JMenu fileMenu = new JMenu( "文件(F)" );fileMenu.setMnemonic( 'F' );// 设置新建菜单项JMenuItem newItem = new JMenuItem( "新建(N)" );newItem.setMnemonic( 'N' );fileMenu.add( newItem );newItem.addActionListener(new ActionListener() {public void actionPerformed( ActionEvent event ){displayText.setText("");}});// 设置打开菜单项JMenuItem openItem = new JMenuItem( "打开(O)" );openItem.setMnemonic( 'O' );fileMenu.add( openItem );openItem.addActionListener(new ActionListener() {public void actionPerformed( ActionEvent event ){fd.setTitle("打开"); //设置标题fd.show();if (fd.getFile() != null) {File file = new File(fd.getFile()); //用从fd中取得的文件建立新文件,即打开的文件displayText.setText( "");try {FileReader f = new FileReader(file);BufferedReader b = new BufferedReader(f);//按行读打开的文件,然后传入文本域String s;try {while ((s = b.readLine()) != null) {displayText.append(s + "\n");//将给定文本追加到文本域的当前文本(即把读的内容加入文本域)}f.close();b.close();} catch (IOException ex) {}} catch (FileNotFoundException ex) {}}else {return;}}});fileMenu.addSeparator(); //加分隔线// 设置保存菜单项JMenuItem saveItem = new JMenuItem( "保存(S)" );saveItem.setMnemonic( 'S' );fileMenu.add( saveItem );saveItem.addActionListener(new ActionListener() {public void actionPerformed( ActionEvent event ){ fd.setFile("*.java");fd.setMode(FileDialog.SAVE);fd.setTitle("保存");fd.show();if (fd.getFile() != null) {File file = new File(fd.getFile());try {PrintWriter pw = new PrintWriter(file);pw.print(displayText.getText());//这一部分用于把textArea1中的内容打印到pw指定的文件file中去,file围在对话框中选定的文件pw.flush(); //刷新该流的缓冲,然后关闭该流pw.close();} catch (FileNotFoundException ex){ex.printStackTrace();}}else {return;}}});// 设置另存为菜单项JMenuItem saveAsItem = new JMenuItem( "另存为(Z)" );saveAsItem.setMnemonic( 'Z' );fileMenu.add( saveAsItem );saveAsItem.addActionListener(new ActionListener() {public void actionPerformed( ActionEvent event ){ fd.setFile("*.java");fd.setMode(FileDialog.SAVE);fd.setTitle("另存为");fd.show();if (fd.getFile() != null) {File file = new File(fd.getFile());try {PrintWriter pw = new PrintWriter(file);pw.print(displayText.getText());//这一部分用于把textArea1中的内容打印到pw指定的文件file中去,file围在对话框中选定的文件pw.flush(); //刷新该流的缓冲,然后关闭该流pw.close();} catch (FileNotFoundException ex){ex.printStackTrace();}}else {return;}}});fileMenu.addSeparator(); //加分隔线// 设置退出菜单项JMenuItem exitItem = new JMenuItem( "退出(X)" );exitItem.setMnemonic( 'x' );fileMenu.add( exitItem );exitItem.addActionListener(new ActionListener() {public void actionPerformed( ActionEvent event ){System.exit( 0 );}});bar.add( fileMenu );//创建编辑菜单及其菜单项JMenu editMenu = new JMenu( "编辑(E)" );editMenu.setMnemonic( 'E' );//剪切菜单选项JMenuItem cutItem = new JMenuItem( "剪切(T)" );cutItem.setMnemonic( 'T' );editMenu.add( cutItem );cutItem.addActionListener(new ActionListener(){public void actionPerformed( ActionEvent event ){selectText = displayText.getSelectedText();//取得选定的文本int start = displayText.getSelectionStart();//选定的文本的开始位置int end = displayText.getSelectionEnd();//选定的文本的结束位置displayText.replaceRange("", start, end);/*用指定替换文本替换指定开始位置与结束位置之间的文本。
课程设计----基于于JAVA的记事本编辑器的设计与实现
计算机工程学院课程设计报告设计名称:面向对象课程设计选题名称:文本编辑器的设计与实现姓名:学号:专业班级:D软件081系(院):计算机工程学院设计时间:2010.6.14~2010.6.27 设计地点:软件实验室、教室图2文本编辑器中的菜单:图3:字体选择下拉列表图4:文本编辑器文件对话框(保存文件对话框):图5:选择背景颜色对话框:图6:简单的帮助对话框:附录(程序代码)import java.awt.*;import java.awt.event.*;import java.io.*;import javax.swing.JColorChooser;import javax.swing.*;import javax.swing.event.*;class Window extends Frame implements ActionListener,ItemListener,DocumentListener{FileDialog filedialog_save,filedialog_load;MenuBar menubar;Menu menu1,menu2,menu3,menu4,menu5,menu6;MenuItemitemSave,itemLoad,item1,item2,item3,item4,item5,item6,item7,item8,item9,item10,item11,item12,item13,item14,item15;Choice list;JTextArea area;BufferedReader in;FileReader file_reader;BufferedWriter out;FileWriter tofile;JScrollPane scrollpane;Window(String s){super(s);。
Java课程设计(文本编辑器)
《Java语言》课程期末作业题目第8题:文本编辑器学院专业班别学号姓名2010年12月14日一、课程题目第8题:文本编辑器制作一个简单的文本编辑器,交互性要求:【最大选题人数:8】(1) 可输入文字(仅要求英文及标点符号)(2) 实现一些常用的编辑功能:如复制和粘贴,查找和替换,首字母自动大写,拼写自动更正……(3) 可打开并显示TXT文件,并且可以将编辑结果保存为TXT文件二、题目分析与设计2.1需求分析现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed, xint 。
功能也是应有尽有,有能改变字体的,有能改变文字颜色的。
但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。
仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。
本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。
2.2功能设计本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能主要有以下几个方面:(1).菜单中有“文件”,“编辑”,“格式”,“查看”,“帮助”五个主菜单。
(2)“文件”栏目分别有“新建”,“打开”,“保存”,“打印”,“退出”五个子菜单。
分别用于新建文件,打开文件,保存文件,打印文件和退出记事本。
(3)“编辑”栏目包括有“全选”,“复制”,“剪切”,“粘贴”,“查找”,“查找下一个”,“替换”七个字菜单。
用于全选文字,剪切文字,复制文字,粘贴文字,查找关键字,替换关键字等。
(4)“格式”栏目包括有“自动换行”,“字体”两个功能,点击自动换行可以实现文本自动换行,字体则提供了各种字形字号颜色等选择。
(5)“查看”栏目有“状态”功能。
(6)“帮助”栏目有“帮助主题”,“关于记事本”两个子菜单,帮助主题可以查看windows记事本帮助文件,关于记事本则是作者和版权信息。
Java课程设计—文本编辑器的设计与实现
面向对象课程设计报告第 1 页,共11 页主要代码:Write note;{// 新建选项File_bar_creat = this.AddItem("新建(N) Ctrl+N", File_bar);File_bar_creat.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent arg0){// 设置新文件内容text.setText("");}});//打开选项File_bar_open = this.AddItem("打开(O) Ctrl+O", File_bar);File_bar_open.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent event){try{jfc.setCurrentDirectory(new File("."));// 设置当前目录jfc.setFileFilter(new filter()); // 过滤文件jfc.setAcceptAllFileFilterUsed(false); // 全选文件jfc.showOpenDialog(null); // 弹出一个 "Open File" 文件选择器对话框。
file = jfc.getSelectedFile(); // 获取已经选择目录jsb = file.getName(); // 获取目录名setTitle(jsb); // 显示目录名int length = (int) (jfc.getSelectedFile()).length();1.程序运行主界面如图1示:图12.各个菜单基本构成如下图2、图3、图4、图5和图6所示:图2图3图4图63.依次选择文件目录下新建、打开、保存、另存为和退出按钮,运行结果如图7、图8、图9、图10所示:图7图8面向对象课程设计报告第11 页,共11 页图104.对于数据的编辑,该实验实现了剪切、复制、粘体、撤销和删除等基本功能。
文本编辑器课程设计
文本编辑器 课程设计一、课程目标知识目标:1. 学生能理解文本编辑器的基本功能和操作方法。
2. 学生掌握文本编辑器的排版技巧,包括字体、字号、颜色设置,以及段落格式的调整。
3. 学生了解文本编辑器中的查找与替换功能,并能运用其提高编辑效率。
技能目标:1. 学生能够熟练运用文本编辑器进行文档的创建、编辑和保存。
2. 学生掌握文本编辑器的快捷键操作,提高文本编辑速度。
3. 学生通过实践操作,培养解决问题的能力和团队协作能力。
情感态度价值观目标:1. 学生培养对信息技术课程的兴趣,增强学习动力。
2. 学生认识到文本编辑在日常生活和未来工作中的重要性,提高职业素养。
3. 学生在团队协作中,学会分享与交流,培养合作精神和集体荣誉感。
课程性质:本课程为信息技术课程,旨在让学生掌握文本编辑器的使用技巧,提高文字处理能力。
学生特点:六年级学生已经具备一定的计算机操作基础,对新鲜事物充满好奇心,喜欢动手实践。
教学要求:结合学生特点,注重理论与实践相结合,以任务驱动法引导学生自主探究和合作学习,关注学生的个体差异,使每个学生都能在课程中收获成长。
通过具体的学习成果分解,为后续教学设计和评估提供依据。
二、教学内容1. 文本编辑器简介:介绍文本编辑器的概念、作用和常见类型,使学生对其有一个整体认识。
教材章节:第一章 认识文本编辑器2. 文本编辑器基本操作:包括新建、打开、保存、关闭文档,以及撤销与重做操作。
教材章节:第二章 文本编辑器的基本操作3. 文本格式设置:教授字体、字号、颜色设置,以及段落格式调整。
教材章节:第三章 文本格式设置4. 排版技巧:讲解文本对齐、缩进、行距、项目符号等排版方法。
教材章节:第四章 文本排版技巧5. 查找与替换:介绍文本编辑器中的查找与替换功能,提高编辑效率。
教材章节:第五章 查找与替换6. 文本编辑快捷键:学习常用的文本编辑快捷键,提高编辑速度。
教材章节:第六章 文本编辑快捷键7. 实践操作:安排综合实践任务,让学生运用所学知识完成文档编辑,巩固所学内容。
Java课设_文本编辑器
Java课设_文本编辑器预览说明:预览图片所展示的格式为文档的源格式展示,下载源文件没有水印,内容可编辑和复制目录第一章绪论 (1)一、Java语言特点 (1)二、Java发展前景 (2)第二章问题分析 (5)一、文本编辑器的设计 (5)二、功能、性能 (5)三、开发环境 (6)四、设计示意图 (6)第三章系统详细设计 (7)一、文件打开与保存对话框的设计 (7)二、调用颜色对话框的设计 (9)三、建立Choice下拉列表实现对字体的设计 (10)四、剪切,复制,粘贴的设计 (10)第四章代码实现 (12)一、字形,字体大小部分 (12)二、帮助中关于主题部分 (14)第五章测试与调试 (16)一、调试分析 (16)二、测试结果 (16)第六章总结与心得 (19)第七章附录 (20)一、源代码 (20)二、参考文献 (31)第一章绪论一、Java语言特点1、面向对象Java语言是一个完全面向对象的语言,并且对软件工程技术有很强分得支持:Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型:对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏:类提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。
2、平台无关性严格的语言定义:没有“依据机器的不同而不同”或“由编译器决定”等字限,最后的目标码都是一致:的:Java解释器生成与体系结构无关的字节码指令,只要安装了Java运行是系统,Java程序就可在任意的处理器上运行。
这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。
3、安全问题Java是在网络环境下使用的语言,一个安全的网络至少要防止以下几种破坏的可能性;毁灭系统资源;消耗系统资源;挖掘系统或个人机密;骚扰正常工作的进行。
4、多线程单线程程序一个时刻只能做一件事情,多线程程序允许在同一时刻同时做多件事情;其他大多数高级语言,包括C,C++等,都不支持多线程,只能编写顺序执行的程序(除非有操作系统API的支持);Java提供现成的类Thread,只要继承这个类就可以编写多线程的程序;多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作;通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,而不需要采用全局的事件循环机制,这样就很容易地实现网络上的实时交互行为。
Java程序设计实验报告文本编辑器的设计与实现
Java程序设计实验报告文本编辑器的设计与实现Java程序设计实验报告学生姓名:邵强学号:课程编号:06021801-0实验名称:文本编辑器的设计与实现实验内容:设计与实现一个文本编辑器,要求具有方便的图形用户界面,包括标题栏、菜单栏,菜单栏有相关的菜单和菜单项,有快捷键,具有编辑、打开、保存、复制、粘贴等功能(详细功能要求经过运行提供的字节码文件来确定,主类是JNotePadUI)。
完成有关类的设计,并调试运行,给出有代表性的程序输出结果(程序运行截图)。
程序代码如下:package note;import java.awt.*;import java.awt.event.*;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.*;import javax.swing.*;public class Mynote extends JFrame implements ActionListener{ JMenu menuFile; JMenu menuEdit ; JMenu menuAbout; JPopupMenu popUpMenu;JTextArea txt=null; //编辑区JLabel lab=new JLabel("未修改");JFileChooser fileChooser = new JFileChooser();File saveFileName = null, fileName = null;public Mynote(String s){super(s);createMenuBar(); //菜单栏createContentPane(); //文本编辑区组件setBounds(100,100,600,450);addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){ closeFile(); } });setVisible(true); }public void createMenuBar() {JMenuBar menuBar = new JMenuBar();menuFile = new JMenu("文件");menuEdit = new JMenu("编辑");menuAbout= new JMenu("关于");menuBar.add(menuFile);menuBar.add(menuEdit);menuBar.add(menuAbout);JMenuItem itemOpen = new JMenuItem("打开"); menuFile.add(itemOpen);itemOpen.addActionListener(this);menuFile.addSeparator();JMenuItem itemSave = new JMenuItem("保存");menuFile.add(itemSave);itemSave.addActionListener(this);JMenuItem itemSaveas=new JMenuItem("另存为"); menuFile.add(itemSaveas);itemSaveas.addActionListener(this);menuFile.addSeparator();JMenuItem itemQuit = new JMenuItem("关闭");menuFile.add(itemQuit);itemQuit.addActionListener(this);JMenuItem itemCut = new JMenuItem("剪切");menuEdit.add(itemCut);itemCut.addActionListener(this);JMenuItem itemCopy = new JMenuItem("复制");menuEdit.add(itemCopy);itemCopy.addActionListener(this);JMenuItem itemPaste= new JMenuItem("粘贴");menuEdit.add(itemPaste);itemPaste.addActionListener(this);JMenuItem itemAboutnote = new JMenuItem("关于NotePad");menuAbout.add(itemAboutnote);itemAboutnote.addActionListener(this);//右键菜单JMenuItem Copyitem=new JMenuItem("复制");Copyitem.addActionListener(this);JMenuItem Cutitem=new JMenuItem("剪切");Cutitem.addActionListener(this);JMenuItem Pasteitem=new JMenuItem("粘贴");Pasteitem.addActionListener(this);popUpMenu=new JPopupMenu();popUpMenu.add(Copyitem);popUpMenu.add(Cutitem);popUpMenu.add(Pasteitem);//快捷键itemOpen.setAccelerator(KeyStroke.getKeyStroke('O',Event.CTRL_MAS K,false));itemSave.setAccelerator(KeyStroke.getKeyStroke('S',Event.CTRL_MASK ,false));itemSaveas.setAccelerator(KeyStroke.getKeyStroke('A',Event.CTRL_MA SK,false));itemQuit.setAccelerator(KeyStroke.getKeyStroke('Q',Event.CTRL_MAS K,false));itemCut.setAccelerator(KeyStroke.getKeyStroke('X',Event.CTRL_MASK, false));itemCopy.setAccelerator(KeyStroke.getKeyStroke('C',Event.CTRL_MAS K,false));itemPaste.setAccelerator(KeyStroke.getKeyStroke('V',Event.CTRL_MAS K,false));setJMenuBar(menuBar);}private boolean isChanged(){if(lab.getText().equals("未修改"))return false;else return true;}public void actionPerformed(ActionEvent e){int option=-1;if(e.getActionCommand().equals("打开")) option=0;if(e.getActionCommand().equals("保存")) option=1;if(e.getActionCommand().equals("另存为")) option=2;if(e.getActionCommand().equals("关闭")) option=3;if(e.getActionCommand().equals("剪切")) option=4;if(e.getActionCommand().equals("复制")) option=5;if(e.getActionCommand().equals("粘贴"))option=6;if(e.getActionCommand().equals("关于NotePad")) option=7;switch(option){case 0:{if(!isChanged()){ open(); }else{ int option2=JOptionPane.showConfirmDialog(this,"文件已修改,是否保存?","保存文件?",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE,null);switch(option2){case JOptionPane.YES_OPTION:saveFile();//保存文件break;case JOptionPane.NO_OPTION:open();break;}}break;}case 1:saveFile();break;case 2:saveFileAs();break;case 3:closeFile();break;case 4:Cut();break;case 5:Copy();break;case 6:Paste();break;case 7:about();break;default:break;}}public void createContentPane() //文本编辑区组件{JScrollPane scrollPane; //滑动条txt = new JTextArea(10,30);txt.setEditable(true);txt.setFont(new Font("宋体",Font.PLAIN,18));txt.setLineWrap(true);scrollPane = new JScrollPane(txt);add(scrollPane, BorderLayout.CENTER);add(lab,BorderLayout.SOUTH);txt.addKeyListener(new KeyAdapter(){public void keyTyped(KeyEvent e){ lab.setText("已修改"); }});txt.addMouseListener(new MouseAdapter(){public void mouseReleased(MouseEvent e){if(e.getButton()==MouseEvent.BUTTON3)popUpMenu.show(e.getComponent(),e.getX(),e.getY());}public void mouseClicked(MouseEvent e){if(e.getButton()==MouseEvent.BUTTON1)popUpMenu.setVisible(false);}});}private void open(){int option=fileChooser.showOpenDialog(this);if(option==JFileChooser.APPROVE_OPTION){ try{ //打开所选文件BufferedReader buf=new BufferedReader(new FileReader(fileChooser.getSelectedFile()));//设置文件标题setTitle(fileChooser.getSelectedFile().toString());//删除前一次文件txt.setText("");//设置状态栏lab.setText("未修改");//取得系统相依的换行符StringlineSeparator=System.getProperty("line.separator");//读取文件并附加至文字编辑区String text;while((text=buf.readLine())!=null){txt.append(text);txt.append(lineSeparator);}buf.close();}catch(IOException e){JOptionPane.showMessageDialog(this,e.toString(),"打开文件失败",JOptionPane.ERROR_MESSAGE);} }}private void saveFile(){//从标题栏取得文件名称File file=new File(getTitle());//若指定文件不存在if(!(file.exists())){ saveFileAs(); }else{ try{ //打开指定文件BufferedWriter buf=new BufferedWriter(new FileWriter(file));//将文字编辑区的文字写入文件buf.write(txt.getText());buf.close();//设置状态栏为未修改lab.setText("未修改");}catch(IOException e){JOptionPane.showMessageDialog(this, e.toString(),"写入文件失败",JOptionPane.ERROR_MESSAGE); }}}private void saveFileAs(){ //显示对话框int option3=fileChooser.showSaveDialog(this);//如果确认选择文件if(option3==JFileChooser.APPROVE_OPTION){ //取得选择的文件File file=fileChooser.getSelectedFile();//在标题栏上设置文件名称setTitle(file.toString());try{ //建立文件file.createNewFile();//进行文件保护saveFile();}catch(IOException e){ JOptionPane.showMessageDialog(this,e.toString(),"无法建立文件",JOptionPane.ERROR_MESSAGE);}}}private void closeFile(){//是否已保存文件if(!isChanged()) dispose();else{int option= JOptionPane.showConfirmDialog(this,"文件已修改,是否保存?","保存文件?",JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE,null);switch(option){case JOptionPane.YES_NO_OPTION:saveFile();case JOptionPane.NO_OPTION:dispose();}}}private void Cut(){txt.cut();lab.setText("已修改");popUpMenu.setVisible(false);}private void Copy()txt.copy();popUpMenu.setVisible(false);}private void Paste(){txt.paste();lab.setText("已修改");popUpMenu.setVisible(false);}private void about(){//显示对话框JOptionPane.showOptionDialog(this,"程序名称\n"+" JNotePad\n"+"简介:\n"+" 一个简单的文字编辑器\n","关于JNotePad",JOptionPane.DEFAULT_OPTION,RMATION_MESSAGE,null,null,null);}public static void main(String args[]) {new Mynote("陆庆庆");}程序有代表性的输出结果及结果分析:这是其中的几个画面截图。
JAVA课程设计报告-心得体会——计算器、文本编辑器
用Java设计计算器calculator内容提要:在本文构造实现了一个计算器擦亮calculator,主要内容包括:calculator的功能需求分析;calculator的基本设计思路和类的划分;calculator的具体实现。
关键字:Java、计算器calculator引言:设计实现一个Java应用程序的过程如下:(1)功能需求分析;(2)设计和类划分;(3)代码编写实现。
本文就按照这个步骤来实现计算器calculator的制作。
正文:1.calculator功能需求分析作为计算器,至少应该具备以下几点功能:(1)计算器要有GUI界面。
(2)能运算小数,并且不会产生精度损失。
(3)用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算和混合运算。
(4)允许正负数间的运算。
(5)可以求一个数值的平方及倒数,可以进行阶乘运算。
(6)有菜单栏选项。
具体的功能需求和界面我们可以模仿微软公司出品的windowsXP中自带的计算器。
如图一:图一windows XP 中的计算器界面图2.calculator基本设计思路和类划分基于第1节中提出对于calculator功能需求的分析,对这个应用程序设计划分类如下:(1)calculator:这个类的功能是实现一个框架(2)calculatorFrame:这个类作为主类,实现主要功能:运算,按钮排布,菜单,颜色设置,文本显示3.calculator的具体实现3.1 calculator类的设计calculator用来定义一个计算器的框架1.主要方法下面以表格的形式列出calculator类至少应该具有的方法和功能描述(如表一所示)。
方法功能描述static void main (String args[]) calculator应用程序的入口,是主方法3.2 calculatorFrame类的设计calculatorFrame类实现整体功能,包括窗体的初始化、各种用户事件监听和响应(菜单、运算、结果显示等等)。
JAVA程序设计题: 文本编辑器设计资料
JAVA程序设计题:文本编辑器设计【问题描述】实现类似Windows操作系统“记事本”的功能。
它是一个简单的文本文档编辑器,可以创建、查看或编辑文本文件。
【实验目的】要求学生能熟练使用基于Swing的GUI设计,熟练使用常用组件和容器,理解java事件处理机制,会查看API documentation完成设计任务,熟练文件流的操作。
【基本功能】设计一个文本编辑器,通过菜单组件可以创建、查看或编辑文本文件。
增加对文件的存贮、剪切和黏贴等功能功能的其他扩展package com.huangyilun.work;import java.awt.*;import java.awt.event.*;import java.io.File;import java.io.FileInputStream;import java.io.FileWriter;import javax.swing.*;public class Notice_B08010332 extends JFrame {public static void main(String[] args) {new Notice_B08010332();}public Notice_B08010332() {super("新建文本文件");setUpUIComponent();setUpEventListener();setVisible(true);this.showForm();}private void showForm(){//侦听窗口关闭操作setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE);addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {dispose();System.exit(0);}});}private void setUpUIComponent() {setSize(640, 480);// 菜单栏JMenuBar menuBar = new JMenuBar();// 设置「文件」菜单JMenu fileMenu = new JMenu("文件");menuOpen = new JMenuItem("打开");// 快捷键设置menuOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));menuSave = new JMenuItem("保存");menuSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));menuSaveAs = new JMenuItem("另存为");menuClose = new JMenuItem("关闭");menuClose.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, InputEvent.CTRL_MASK));fileMenu.add(menuOpen);fileMenu.addSeparator(); // 分隔线fileMenu.add(menuSave);fileMenu.add(menuSaveAs);fileMenu.addSeparator(); // 分隔线fileMenu.add(menuClose);// 设置「编辑」菜单JMenu editMenu = new JMenu("编辑");menuCut = new JMenuItem("剪切");menuCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));menuCopy = new JMenuItem("复制");menuCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));menuPaste = new JMenuItem("粘贴");menuPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));editMenu.add(menuCut);editMenu.add(menuCopy);editMenu.add(menuPaste);menuBar.add(fileMenu);menuBar.add(editMenu);setJMenuBar(menuBar);// 文字编辑区域textArea = new JTextArea();textArea.setFont(new Font("宋体", Font.PLAIN, 16));textArea.setLineWrap(true);JScrollPane panel = new JScrollPane(textArea,ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);Container contentPane = getContentPane();contentPane.add(panel, BorderLayout.CENTER);// 状态栏stateBar = new JLabel("未修改");stateBar.setHorizontalAlignment(SwingConstants.LEFT);stateBar.setBorder(BorderFactory.createEtchedBorder());contentPane.add(stateBar, BorderLayout.SOUTH);popUpMenu = editMenu.getPopupMenu();}private void setUpEventListener() {// 按下窗口关闭钮事件处理addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {closeFile();}});// 菜单- 打开menuOpen.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {openFile();}});// 菜单- 保存menuSave.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {saveFile();}});// 菜单- 另存为menuSaveAs.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { saveFileAs();}});// 菜单- 关闭文件menuClose.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { closeFile();}});// 菜单- 剪切menuCut.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { cut();}});// 菜单- 复制menuCopy.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent e) {copy();}});// 菜单- 粘贴menuPaste.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {paste();}});// 编辑区键盘事件textArea.addKeyListener(new KeyAdapter() {public void keyTyped(KeyEvent e) {processTextArea();}});// 编辑区鼠标事件textArea.addMouseListener(new MouseAdapter() { public void mouseReleased(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON3)popUpMenu.show(editMenu, e.getX(), e.getY());}public void mouseClicked(MouseEvent e) {if (e.getButton() == MouseEvent.BUTTON1)popUpMenu.setVisible(false);}});}private void openFile() {if (isCurrentFileSaved()) { // 文件是否为保存状态open(); // 打开} else {// 显示对话框int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?","保存文件?", JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE, null);switch (option) {// 确认文件保存case JOptionPane.YES_OPTION:saveFile(); // 保存文件break;// 放弃文件保存case JOptionPane.NO_OPTION:open();break;}}}private boolean isCurrentFileSaved() {if (stateBar.getText().equals("未修改")) {return true;} else {return false;}}private void open() {JFileChooser chooser = new JFileChooser();chooser.showOpenDialog(this);File file = chooser.getSelectedFile();currFile = file;String str = "";try{FileInputStream fileinput = new FileInputStream(file.getAbsolutePath());int x = fileinput.available();byte b[] = new byte[x];fileinput.read(b);str = new String(b);}catch(Exception e){e.printStackTrace();}if (file != null)this.textArea.setText(str);}private void saveFile() {String str = this.textArea.getText();if(currFile != null && !currFile.equals("")){try{FileWriter out = new FileWriter(currFile);out.write(str);out.close();}catch(Exception e){e.printStackTrace();}}else{saveFileAs();}stateBar.setText("已保存");}private void saveFileAs() {JFileChooser chooser = new JFileChooser();chooser.showOpenDialog(this);File file = chooser.getSelectedFile();currFile = file;String str = this.textArea.getText();if(currFile != null && !currFile.equals("")){try{FileWriter out = new FileWriter(currFile);out.write(str);out.close();}catch(Exception e){e.printStackTrace();}}stateBar.setText("已保存");}private void closeFile() {// 是否已保存文件if (isCurrentFileSaved()) {// 释放窗口资源,而后关闭程序dispose();} else {int option = JOptionPane.showConfirmDialog(null, "文件已修改,是否保存?","保存文件?", JOptionPane.YES_NO_OPTION,JOptionPane.WARNING_MESSAGE, null);switch (option) {case JOptionPane.YES_OPTION:saveFile();break;case JOptionPane.NO_OPTION:dispose();}}}private void cut() {textArea.cut();stateBar.setText("已修改");popUpMenu.setVisible(false); }private void copy() {textArea.copy();popUpMenu.setVisible(false); }private void paste() {textArea.paste();stateBar.setText("已修改");popUpMenu.setVisible(false); }private void processTextArea() { stateBar.setText("已修改");}private JMenuItem menuOpen; private JMenuItem menuSave; private JMenuItem menuSaveAs; private JMenuItem menuClose; private JMenu editMenu; private JMenuItem menuCut; private JMenuItem menuCopy;private JMenuItem menuPaste;private JTextArea textArea;private JLabel stateBar;private JPopupMenu popUpMenu;private File currFile;}。
JAVA课程设计 计算器 文本编辑器
课程设计设计题目:JAVA语言编写计算器和文档编辑器学生姓名:李伟学号:专业班级:电子商务09-1班指导教师:聂会星程八一惠刚靳鹏方芳2010 年12 月12 日计算器制作一、实验目的1、为了加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习Java高级应用及今后从事专业工作打下基础。
2、在对Java程序的调试过程中,提高分析程序中出现的错误和排除这些错误的能力。
通过上机实践,加深学生对计算机软件运行环境,以及对操作系统与计算机语言支持系统相互关系的了解。
3、熟悉Java开发工具,运行java应用程序和小程序;掌握Java程序的编辑、编译、运行。
掌握各种数据类型及其使用方法;掌握表达式的组成;理解定义变量的作用,掌握定义变量的方法;掌握各种运算符的使用及其优先级控制。
学习结构化程序设计的分支结构及分支语句的使用;学习使用结构化程序设计的循环结构及循环语句的使用;掌握数组的使用方法,着重掌握二维数组,编写使用二维数组的程序;掌握常用字符串类、方法。
4、学会类的定义和对象的使用;封装、继承、多态的应用;如何创建包,编译、运行包中的类;方法的覆盖和重载;抽象类、接口、内部类的使用。
掌握异常处理的使用方法。
着重掌握基本的GUI组件;掌握容器布局管理;掌握事件处理机制。
二、实验要求计算器要有GUI界面,用户可以输入所需计算的数值,可以进行加、减、乘、除四种最基本的运算,可以求一个数值的平方及倒数,可以进行阶乘运算,要能运算小数,并且不会产生精度损失,在必要情况下,可以进行四舍五入的运算。
允许正负数间的运算。
三、实验内容通过创建一个框架并在框架上加上适当的按钮以及文本框并通过对按钮设置监听器以达到进行运算的目的,由于对java知识掌握的不多还需要通过参阅书本来完成,我们小组有三个人,我负责做算法部分,其他两人负责界面布局以及监听器的设置。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
淮海工学院计算机工程学院
课程设计报告
设计名称:面向对象课程设计
选题名称:文本编辑器的设计与实现
姓名:俞凯学号:
专业班级:中新软111 系(院):国际学院
设计时间:2013.6.17~2013.6.30
设计地点:软件实验室、教室
面向对象课程设计报告第 3 页,共25 页
面向对象课程设计报告第 5 页,共25 页
面向对象课程设计报告第7 页,共25 页
面向对象课程设计报告第9 页,共25 页}
class zhuti extends Frame implements ActionListener
{
Button btn;
Label lab;
zhuti()
{
setLayout(null);
btn=new Button("确定");
lab=new Label("这是一个简单的文本编辑器!");
add(btn);
add(lab);
btn.addActionListener(this);
setBounds(200,200,250,150);
setVisible(true);
lab.setBounds(20 ,60,220,30);
lab.setFont(new Font("楷体",Font.BOLD,16));
lab.setBackground(Color.cyan);
btn.setBounds(100,100,50,30);
btn.setBackground(Color.cyan);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==btn)
{
dispose();
}
}
}
对于帮助中关于主题部分的实现,我另构建了一个Frame框架,主要是由一个标签及一个按钮构成,由标签输出“这是一个简单的文本编辑器!”,按钮用dispose()方法实现退出功能。
7)类图
面向对象课程设计报告第11 页,共25 页
1、调试分析:
(1)关于打开和保存我运用了文件对话框, filedialog_save和filedialog_load以及文件输入输出流来实现,新建功能我选用了area.setText(null)方法.
(2)对于剪贴,粘贴,复制的实现则用public void removeUpdate(DocumentEvent e)及public void insertUpdate(DocumentEvent e).
(3)背景的运用也是调用了颜色对话框,需引用import javax.swing.JcolorChooser包用Color newColor=JColorChooser.showDialog(this,"调色板",area.getBackground())方法;
(4)至于字体功能的实现,则是先创建一个下拉列表Choice list,再实现对它的监听list.addItemListener(this), 最后用public void itemStateChanged(ItemEvent e)方法实现,需注意的是这种方法的实现只对javax.swing包中的组件有效,对于java.awt包中的组件,系统则是采取默认的字体名称.
2、用户使用说明:
软硬件要求:
软件方面:Java开发环境
硬件方面:JDK软件抑或是Eclipse软件对硬件没有很高的要求。
3、测试结果:
图1:文本编辑器的运行结果:
图2文本编辑器中的菜单:
面向对象课程设计报告第13 页,共25 页图3:字体选择下拉列表:
图4:文本编辑器文件对话框(保存文件对话框):图5:选择背景颜色对话框:
面向对象课程设计报告第15 页,共25 页
面向对象课程设计报告第17 页,共25 页
面向对象课程设计报告第19 页,共25 页
面向对象课程设计报告第21 页,共25 页
面向对象课程设计报告第23 页,共25 页
面向对象课程设计报告第25 页,共25 页。