Java编写的文本编辑器

Java编写的文本编辑器
Java编写的文本编辑器

界面:

代码(编译后可直接运行):

//简单的类似记事本的文档编辑器

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

import java.io.*;

import java.awt.font.*;

import javax.swing.undo.UndoManager;

public class MyTxt

{

public static void main(String[] args)

{

Aframe frame = new Aframe();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show();

}

}

class Aframe extends JFrame

{

public Aframe()

setTitle("我的记事本");

setSize(WIDTH, HEIGHT);

Container contentPane = getContentPane();

JPanel txtPanel = new JPanel();

JPanel comboxPanel = new JPanel();

JPanel textPanel = new JPanel();

txtArea=new JTextArea("",17,40);

JScrollPane scrollPane =new JScrollPane(txtArea);

txtPanel.add(scrollPane);

contentPane.add(comboxPanel,BorderLayout.NORTH);

contentPane.add(txtPanel);

contentPane.add(textPanel,BorderLayout.SOUTH);

//Caidan lan:添加主菜单并设置快捷键

JMenuBar menuBar =new JMenuBar();

setJMenuBar(menuBar);

fileMenu=new JMenu("文件(F)");

editMenu=new JMenu("编辑(E)");

typeMenu=new JMenu("格式(O)");

viewMenu=new JMenu("查看(V)");

helpMenu=new JMenu("帮助(H)");

aboutMenu=new JMenu("关于(A)");

fileMenu.setMnemonic('F');

editMenu.setMnemonic('E');

typeMenu.setMnemonic('O');

viewMenu.setMnemonic('V');

helpMenu.setMnemonic('H');

aboutMenu.setMnemonic('A');

menuBar.add(fileMenu);

menuBar.add(editMenu);

menuBar.add(typeMenu);

menuBar.add(viewMenu);

menuBar.add(aboutMenu);

menuBar.add(helpMenu);

//wenjian“文件”菜单的子菜单添加以及设置加速器,监听器

aa=fileMenu.add(new ShowAction("新建"));

aa.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK ));

ab=fileMenu.add(new ShowAction("打开"));

ab.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MAS K));

ac=fileMenu.add(new ShowAction("保存"));

ac.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK ));

ad=fileMenu.add(new ShowAction("另存为"));

ad.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK ));

fileMenu.addSeparator();

ae=fileMenu.add(new ShowAction("页面设置"));

ae.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK ));

af=fileMenu.add(new ShowAction("打印"));

af.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK) );

fileMenu.addSeparator();//分割线

ag=fileMenu.add(new ShowAction("退出"));

ag.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK ));

//bianji“编辑”菜单的子菜单添加以及设置加速器,监听器

ah=editMenu.add(new ShowAction("撤消"));

editMenu.addSeparator();

ah.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK) );

ai=editMenu.add(new ShowAction("剪切"));

ai.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK) );

aj=editMenu.add(new ShowAction("复制"));

aj.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK) );

an=editMenu.add(new ShowAction("粘贴"));

an.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK ));

ak=editMenu.add(new ShowAction("删除"));

ak.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_MASK) );

editMenu.addSeparator();

al=editMenu.add(new ShowAction("查找"));

al.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK)) ;

am=editMenu.add(new ShowAction("全选"));

am.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MAS K));

//geshi“格式”菜单的子菜单添加以及设置加速器,监听器

zdhh=new JMenu("自动换行(L)");

zdhh.setMnemonic('L');

typeMenu.add(zdhh);

ButtonGroup group =new ButtonGroup();

xz=new JRadioButtonMenuItem("选择");

xz.addActionListener(new ShowAction("选择"));

xz.setSelected(true);

qxxz=new JRadioButtonMenuItem("取消");

qxxz.addActionListener(new ShowAction("取消"));

qxxz.setSelected(true);

group.add(xz);group.add(qxxz);

zdhh.add(xz);zdhh.add(qxxz);

bj=typeMenu.add(new ShowAction("背景颜色"));

bj.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK) );

zt=typeMenu.add(new ShowAction("字体"));

zt.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK)) ;

//字体弹出框中的“确定”按钮

que=new Button("确定");

que.addActionListener(new boxlistener());

//chakan“查看”菜单的子菜单添加以及设置加速器,监听器

ztl=viewMenu.add(new ShowAction("状态栏"));

ztl.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK) );

//guanyu“关于”菜单的子菜单添加以及设置加速器,监听器

zzxx=aboutMenu.add(new ShowAction("作者信息"));

zzxx.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MAS K));

bq=aboutMenu.add(new ShowAction(""));

bq.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,InputEvent.CTRL_MASK ));

sm=aboutMenu.add(new ShowAction("声明"));

sm.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK ));

//bangzhu“帮助”菜单的子菜单添加以及设置加速器,监听器

shm=helpMenu.add(new ShowAction("说明"));

shm.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MAS K));

//文本框底部工具栏的设置

toolbar2=new JToolBar();

textPanel.add(toolbar2);

text1=new JTextField("就绪",10);

text2=new JTextField("欢迎使用该记事本!",10);

text3=new JTextField("",10);

text4=new JTextField("",10);

textPanel.setLayout(new GridLayout(1, 4));

toolbar2.add(text1);

toolbar2.add(text2);

toolbar2.add(text3);

toolbar2.add(text4);

text1.setEditable(false);

text2.setEditable(false);

text3.setEditable(false);

text4.setEditable(false);

//组合框的设置

//字体

zitiLabel=new JLabel("字体");comboxPanel.add(zitiLabel);

String zit[]={"宋体","华文行楷","楷体","黑体","幼圆"};

zitibox=new JComboBox(zit);

comboxPanel.add(zitibox);

//颜色

yanseLabel=new JLabel("颜色");comboxPanel.add(yanseLabel);

String yans[]={"黑色","蓝色","绿色","红色","黄色","蓝绿色","浅灰色"};

yansebox=new JComboBox(yans);

comboxPanel.add(yansebox);

//大小

daxiaoLabel=new JLabel("大小");comboxPanel.add(daxiaoLabel);

String dax[]={"15","10","5","20","25","30","35","40","..."};

daxiaobox=new JComboBox(dax);

comboxPanel.add(daxiaobox);

zitibox.setEditable(true);

yansebox.setEditable(true);

daxiaobox.setEditable(true);

comboxPanel.setLayout(new FlowLayout(FlowLayout.LEFT));//靠左排列

//组合框注册监听器

yansebox.addActionListener(new boxlistener());

zitibox.addActionListener(new boxlistener());

daxiaobox.addActionListener(new boxlistener());

txtPanel.setLayout(new GridLayout(1, 1));

//实例化“撤销”

um= new UndoManager ();

txtArea.getDocument().addUndoableEditListener(um);

}

//菜单栏的接口实现

private class ShowAction extends AbstractAction

{

public ShowAction(String name){super(name);}

public void actionPerformed(ActionEvent e)

{

Object s=e.getSource();

//新建

if(s==aa)

{

if(txtArea.getText().equals(""))

{

txtArea.setText("");

}

else{

int n=JOptionPane.showConfirmDialog(Aframe.this, "无标题记事本已改变。\n想要保存吗?","记事本",JOptionPane.YES_NO_CANCEL_OPTION);

if(n==JOptionPane.NO_OPTION){

txtArea.setText("");

setTitle("无标题"+"——"+"记事本");

}

else if(n==JOptionPane.YES_OPTION)

{

save.setVisible(true);

String name=save.getDirectory()+save.getFile();

try

{

FileOutputStream out=new FileOutputStream(name);

out.write(txtArea.getText().getBytes());

out.close();

}

catch(IOException a)

{

System.err.println("保存失败。。!");

}

}

}

}

//打开

if(s==ab)

{

open.setVisible(true);

String name=open.getDirectory()+open.getFile();

String name2=open.getFile();

setTitle(name2);

try

{

FileInputStream in=new FileInputStream(name);

byte[] ia=new byte[in.available()];

in.read(ia);

txtArea.setText(new String(ia));

in.close();

}

catch(IOException a)

{

System.err.println("获取文件失败!");

}

}

//另存为

if(s==ad)

{

save.setVisible(true);

String name=save.getDirectory()+save.getFile();

try

{

FileOutputStream out=new FileOutputStream(name);

out.write(txtArea.getText().getBytes());

out.close();

}

catch(IOException a)

{

System.err.println("保存失败。。!");

}

shifulingcun=1;

}

//保存

if(s==ac)

{

if(shifulingcun!=1)

{save.setVisible(true);}

String name=save.getDirectory()+save.getFile();

try

{

FileOutputStream out=new FileOutputStream(name); out.write(txtArea.getText().getBytes());

out.close();

}

catch(IOException b)

{

System.err.println("保存文件失败");

}

}

//退出

if(s==ag)

{

int selection = JOptionPane.showConfirmDialog( Aframe.this,

"确定退出么?", "退出?",

JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);

if (selection == JOptionPane.OK_OPTION)

{

System.exit(0);

}

}

//选择自动换行

if(s==xz)

{

txtArea.setLineWrap(true);

}

//取消自动换行

if(s==qxxz)

{

txtArea.setLineWrap(false);

}

//背景颜色

if(s==bj)

{

Color color=JColorChooser.showDialog(Aframe.this, "调色板", txtArea.getBackground());

if(color!=null)

txtArea.setBackground(color);

}

//作者信息

if (s==zzxx)

{int selection = JOptionPane.showConfirmDialog(

Aframe.this,

"“我的记事本”编写小组成员:悦,王征,光辉","作者信息",

JOptionPane.DEFAULT_OPTION);

}

//

if (s==bq)

{int selection = JOptionPane.showConfirmDialog(

Aframe.this,

"所有,盗版必究!","",

JOptionPane.DEFAULT_OPTION);

}

//声明

if (s==sm)

{int selection = JOptionPane.showConfirmDialog(

Aframe.this,

"该程序仅用于实践交流","声明",

JOptionPane.DEFAULT_OPTION);

}

//说明

if (s==shm)

{int selection = JOptionPane.showConfirmDialog(

Aframe.this,

"由于种种原因,该版本记事本还存在很多缺陷,我们将在以后的工作中予以改进","说明",

JOptionPane.DEFAULT_OPTION);

}

//剪切复制粘贴

if (s==ai|| s==cutTtem)

{

txtArea.cut();

}

if (s==aj)

{

txtArea.copy();

}

if (s==an)

{

txtArea.paste();

}

//删除

if(s==ak)

{

txtArea.replaceRange("", txtArea.getSelectionStart(), txtArea.getSelectionEnd());

}

//全选

if (s==am)

{

txtArea.selectAll();

}

//撤销

if(s==ah)

{

um.undo();

}

//字体

if (s==zt)

{

tishi.setFont(new Font("华文行楷",1,15));

tanchu.setLocation(300,250);

tanchu.setSize(200,150);

tanchu.setTitle("字体设置");

tanchu.setLayout(new GridLayout(2,2,2,2));

tanchu.add(tishi);

tanchu.add(daxiaobox);

tanchu.add(que);

tanchu.add(zitibox);

tanchu.setVisible(true);

}

//状态栏

aaaaa.setText("当前字体是"+ff+"颜色是"+zzz+"大小是"+kk);

if (s==ztl)

{

tanchu.setLocation(300,250);

tanchu.setSize(300,150);

tanchu.setTitle("当前状态");

tanchu.setLayout(new GridLayout(2,2,2,2));

aaaaa.setEditable(false);

tanchu.add(aaaaa);

tanchu.add(que);

tanchu.setVisible(true);

}

//查找

}

}

//组合框的接口实现

private class boxlistener implements ActionListener {

public void actionPerformed(ActionEvent ee)

{

Object ss=yansebox.getSelectedItem();

Object zz=zitibox.getSelectedItem();

Object dx=daxiaobox.getSelectedItem();

String tr=(String)ss;

String tz=(String)zz;

String td=(String)dx;

//字体菜单中弹出菜单“确定”的响应

if (ee.getSource()==que){

tanchu.dispose();

}

//颜色

if(tr=="红色"){

txtArea.setForeground(Color.red);

zzz="红色";

}

if(tr=="黑色"){

txtArea.setForeground(Color.black);

zzz="黑色";

}

if(tr=="绿色"){

txtArea.setForeground(Color.green);

zzz="绿色";

}

if(tr=="蓝色"){

txtArea.setForeground(Color.blue);

zzz="蓝色";

}

if(tr=="黄色"){

txtArea.setForeground(Color.yellow);

zzz="黄色";

}

if(tr=="蓝绿色"){

txtArea.setForeground(Color.cyan);

zzz="蓝绿色";

}

if(tr=="浅灰色"){

txtArea.setForeground(Color.lightGray);

zzz="浅灰色";

}

//字体

if(tz=="华文行楷"){

Font f=txtArea.getFont();

txtArea.setFont(new Font("华文行楷",f.getStyle(),f.getSize())); ff="华文行楷";

}

if(tz=="楷体"){

Font f=txtArea.getFont();

txtArea.setFont(new Font("楷体",f.getStyle(),f.getSize()));

ff="楷体";

}

if(tz=="宋体"){

Font f=txtArea.getFont();

txtArea.setFont(new Font("宋体",f.getStyle(),f.getSize()));

ff="宋体";

}

if(tz=="黑体"){

Font f=txtArea.getFont();

txtArea.setFont(new Font("黑体",f.getStyle(),f.getSize()));

ff="黑体";

}

if(tz=="幼圆"){

Font f=txtArea.getFont();

txtArea.setFont(new Font("幼圆",f.getStyle(),f.getSize()));

ff="幼圆";

}

//大小

if(td=="5"){

Font f=txtArea.getFont();

txtArea.setFont(new Font(f.getName(),f.getStyle(),5));

kk="5";

}

if(td=="10"){

Font f=txtArea.getFont();

txtArea.setFont(new Font(f.getName(),f.getStyle(),10));

kk="10";

}

if(td=="15"){

Font f=txtArea.getFont();

txtArea.setFont(new Font(f.getName(),f.getStyle(),15));

kk="15";

}

if(td=="20"){

Font f=txtArea.getFont();

txtArea.setFont(new Font(f.getName(),f.getStyle(),20));

kk="20";

}

if(td=="25"){

Font f=txtArea.getFont();

txtArea.setFont(new Font(f.getName(),f.getStyle(),25));

kk="25";

}

if(td=="30"){

Font f=txtArea.getFont();

txtArea.setFont(new Font(f.getName(),f.getStyle(),30));

kk="30";

}

if(td=="35"){

Font f=txtArea.getFont();

txtArea.setFont(new Font(f.getName(),f.getStyle(),35));

kk="35";

}

if(td=="40"){

Font f=txtArea.getFont();

txtArea.setFont(new Font(f.getName(),f.getStyle(),40));

kk="40";

}

}

}

public static final int WIDTH = 550;

public static final int HEIGHT = 450;

JTextArea txtArea;

JMenu fileMenu,editMenu,typeMenu,viewMenu,helpMenu,aboutMenu; JMenuItem

aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,zdhh,zt,ztl,zzxx,bq,sm,shm,bj,cutTtem; JComboBox zitibox,yansebox,daxiaobox;

JLabel zitiLabel,yanseLabel,daxiaoLabel;

FileDialog open=new FileDialog(this,"打开..");

FileDialog save=new FileDialog(this,"另存为..",FileDialog.SAVE); JRadioButtonMenuItem xz,qxxz;

JFileChooser fileChooser;

int shifulingcun;

JToolBar toolbar2;

JTextField text1,text2,text3,text4;

public JTextField aaaaa=new JTextField ("");

UndoManager um;

Dialog tanchu=new Dialog(this);

public Button que;

Label tishi=new Label("字体和大小:");

String ff="",kk="",zzz="";

}

界面:

Java考核 课程名称Java程序设计 题目名称文本编辑器的设计与实现学生学院计算机学院 专业班级计算机17(2)班 学号3117004479 学生姓名李泽豪 指导教师赵锐 2018 年12 月11 日

一、课程题目 编程实现一个文本编辑器 使其具有新建、打开、保存,编辑(查找、替换、大小写转换等)、统计(字数、行数、字符数等)、格式(字体设置、字体大小、字体颜色、背景颜色等)等功能。 要求:基于JFrame窗体设计、使用菜单进行功能选择。 提示:字体颜色,背景颜色的设置,可使用javax.swing包中的JColorChooser类的静态方法showDialog()调用标准颜色对话框来完成;文件操作可通过javax.swing包中JColorChooser类中的showSaveDialog()、showOpenDialog()方法调用标准的的文件对话框来完成。 二、题目分析与设计 2.1开发环境 使用Eclipse开发软件 2.2需求分析 简单的文本编辑器提供给用户基本纯文本的文字编辑功能,能够读取计算机本地磁盘中的文本内容,将用户文本导入到磁盘中之中,以及实现基本的字体设置(字体,字号,字体颜色)简单的编辑字体的功能,以及统计(字数,行数,字符数),增强视觉体验的背景颜色功能等,简单而实用。而网络上的各种编辑器,有的功能不足(如自带的记事本),而有些编辑器功能太繁杂,仅以日常应用方面来说,一个文本编辑器只需要简单的功能就够了。 2.3功能构架 本程序要构建的文本编辑器按照题目要求,分为四个方面: (1)“文件”菜单:包括“新建”并提示是否保存已编辑内容,“打开”计算机本地磁盘的文本文件,主动“保存”自己已经编辑好的内容到电脑的磁盘或“另存为”新的文件之中,以及“退出”并提示是否保存已编辑的内容。 (2)“编辑”菜单:包括对已编辑文本的一个“查找与替换”功能,对已编辑英文文本的一个“大小写转换”功能。 (3)“格式”菜单:实现对文本的“字体”设置,“字体大小”以及“字体颜色”,还有

淮 海 工 学 院 计算机工程学院
课程设计报告
设计名称: 选题名称: 姓 名: 面向对象课程设计 文本编辑器的设计与实现 学 号:
专业班级: 系 (院) : 设计时间: 设计地点: 计算机工程学院 2015.6.21~2014.7.4 计算机楼机房、教室、宿舍
指导教师评语:
成绩:
签名:
年 月 日

面向对象课程设计报告

1
页,共
14

1.课程设计目的
《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程 后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理 论、方法和基础知识的理解,掌握使用 Java 语言进行面向对象设计的基本方法,提高运用 面向对象知识分析实际问题、解决实际问题的能力。
2.课程设计任务与要求:
课程设计可选用 NetBeans、Eclipse、JBuilder 等作为开发平台以提高开发效率,尽可能熟 练掌握其中一种集成开发环境。建议采用 UML 建模技术进行系统的分析设计,在 Visio 中画出系 统用例图和类图,并将 UML 图复制到设计报告中。 通过这次设计,要求掌握以下内容: 1)面向对象技术中的继承与多态(重载和覆盖)机制、各种修饰符的使用 2)类、包、接口的定义与使用 3)常用工具类与算法的实现(数组、向量、字符串、链表) 4)Java 常用标准 GUI 组件及其事件处理 5)Java 的异常处理机制 6)Java 的数据库连接技术 7)Java 的多线程技术与动画制作 8)Java 的网络编程 任务: 设计一个类似于 Windows 记事本(Notepad)的 Java 程序。可以打开、新建、保存一个文本 文件;对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复 制、粘贴、剪切、查找、替换等) ;在文本中能够插入对象。简单文本编辑器提供给用户基本的 纯文本编辑功能, 能够将用户录入的文本存储到本地磁盘中。 能够读取磁盘中现有的纯文本文件, 以及方便用户进行需要的编辑功能。

基于java的文本编辑器开发 当今,计算机以及网络技术的飞速发展,社会正快速向信息化社会前进,我们需要更智能,更专业的软件帮助我们完成工作,从而提高了工作效率。 目前文本编辑器种类很多,所提供的功能也很多,但是能满足用户实现多种功能和进行Java的编译与运行很少,不能更好的适应当前用户的要求。本设计所完成的文本编辑器功能是针对学习Java程序语言,因此我们利用Java程序设计虚拟机和软件对用户及使用者的应用过程形成一整套完整的编写代码,编译,运行。 本文本编辑器的开发主要包括界面窗口的菜单栏和工具栏以及树结构,还有链接Java虚拟机实现编译与运行。使用SUN公司的Java中的GUI作为开发技术,利用其提供的各种类与接口,首先建立系统应用原型。 本文本编辑器的开发采用JDK6.0和 UltraEdit为开发工具,操作系统为Windows98/Windows 2000/Windows XP等。

目录 1 前言 (3) 2 问题的提出及可行性研究 (4) 2.1问题的提出及定义 (4) 2.2可行性研究 (5) 2.2.1 对现行文本编辑器的分析 (5) 2.2.2 新文本编辑器的可行性研究分析 (5) 3 用户需求分析 (7) 3.1用户调查 (7) 3.2确定目标系统的功能 (7) 4 系统设计与开发环境 (8) 4.1系统相关类的设计 (8) 4.2开发语言及其开发环境 (12) 4.2.1开发语言概述 (12) 4.2.2 Java开发环境——JDK的介绍 (14) 4.3环境变量的设置 (15) 4.3.1.环境变量的作用 (15) 4.3.2 如何设置环境变量 (16) 5 关键技术和源代码的实现 (18) 5.1关键技术剖析 (18) 5.2源码分析 (19) 6 系统测试 (46) 6.1测试方案 (46) 6.2测试项目 (46) 6.3编辑器截图演示 (47)

软件学院 课程设计报告书 课程名称 设计题目文本编辑器的设计与实现 专业班级XXXXXXXXXXX 学号xxxxxxxxxx 姓名xxx 指导教师

2011 年11月

1 设计时间 2011年11月 2 设计目的 《面向对象程序设计》是一门实践性很强的计算机专业基础课程,课程设计是学习完该课程后进行的一次较全面的综合练习。其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本方法,提高运用面向对象知识分析实际问题、解决实际问题的能力,提高学生的应用能力。目前文本编辑器种类很多,所提供的功能也很多,但是能满足用户实现多种功能和进行Java的编译与运行很少,不能更好的适应当前用户的要求。本设计所完成的文本编辑器功能是针对学习Java程序语言,因此我们利用Java程序设计虚拟机和软件对用户及使用者的应用过程形成一整套完整的编写代码,编译,运行。 3设计任务 文本编辑器的设计与实现:设计一个类似于Windows记事本(Notepad)的Java程序。可以打开、新建、保存一个文本文件;对选中的文本进行各种编辑操作(设置字体、字号、字型、对齐方式、背景、前景色、复制、粘贴、剪切、查找、替换等);在文本中能够插入对象。 4 设计内容 4.1需求分析 需求分析的任务是确定功能必须完成的工作,也就是对目标系统提出完整、准确、清晰、具体的要求。简单文本编辑器提供给用户基本的纯文本编辑功能,能够将用户录入的文本存储到本地磁盘中。能够读取磁盘中现有的纯文本文件,以及方便用户进行需要的编辑功能。文件操作能够实现新建、保存、打开文档等,编辑操作能过实现文本的剪贴、复制、粘贴等,格式操作能过实现字体设置、背景等,帮助操作能够实现关于主题的查看等功能。 4.2概要设计 4.2.1程序基本功能概括

import java.awt.*; import java.awt.eve nt.*; import java.io.*; public class Notepad /*impleme nts Action Liste ner , MouseListe ner , MouseMoti on Liste ner , Win dowListe ner , ItemListe ner , KeyListe ner, TextListe ner */ { //成员变量 private Menultem miNew , miOpen , miSave , miSaveAs , miExit ; // 文 件菜单项:新建,打开,保存,另存为,退出 private Menultem miCut , miCopy , miPaste , miDelete ;//编辑菜单项: 剪切,复制,粘贴,删除 private Menultem miFont , miLowtoCapital , miCapitaltoLow , miEncrypt miDisencrypt ; //格式菜单项:字体 private Menultem miAboutNotepad ; // 帮助菜单项:关于记事本 private Frame mainFrame ; // 主框架 private Men uBar mb ; // 菜单条 private Me nu mFile , mEdit , mFormat 式,帮助 mHelp ; //菜单:文件,编辑,格 private TextArea ta ; //文本区 private String tempString ; 〃临时字符串,用于存储需要复制粘贴的字符串 private boolea n textValueCha nged = false private int id_fo nt //字体 Stri ng fileName = "" ; //上次保存后的文件名和地址 //构造函数 public Notepad(){ //框架 main Frame = new Frame ( "Notepad v0.99 by Laun chi ng" ); mb = new Men uBar (); ta = new TextArea (30 ,60); ta .setFont( new Font ( "Times New Rome" , Font. PLAIN , 15)); ta .setBackground( new Color(0,250,200)); //菜单条 mFile = mEdit = new Menu ( new Menu ( "文件"); "编辑");

《Java语言》课程期末作业 题目第6题:文本编辑器 学院计算机学院 专业网络工程 班别13级(3 )班 学号 姓名 2015年06月17日

一、课程题目 制作一个简单的文本编辑器,交互性要求:【最大选题人数:5】 (1) 可输入文字(仅要求英文及标点符号) (2) 实现一些常用的编辑功能:如复制和粘贴,查找和替换,首字母自动大写,拼写自动更正…… (3) 可打开并显示TXT文件,并且可以将编辑结果保存为TXT文件 二、题目分析与设计 1. 注明所使用的开发环境(Eclipse、NetBeans,JBuilder)。 开发环境:Eclipse

2. 论述题目的需求。给出软件功能架构图。 本题目要求实现类似于一个记事本的文本编辑器功能。要能够输入文字,能够实现一些常用的编辑功能,可打开并显示TXT文件,并且可以将编辑结果保存为TXT文件。本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面: ① 菜单栏中有“文件”,“编辑”,“字体”三个主菜单。 ②“文件”菜单有“新建”,“打开”,“保存”三个菜单项:分别用于新 建文件,打开文件,保存文件。 ③“编辑”菜单中有“复制”“剪切”“粘贴”“查找”“替换”五个菜单项:用于实现复制所选文字,剪切所选文字,粘贴文字,查找,替换等功能。 ④“字体”中有“格式”一个菜单项:用来控制文本框中文本的字体类型功能; 软件功能架构图:

3. 论述界面设计过程,指出其设计上的创意及组件的布局策略。 这个框架主要运用盒子布局对象和grid布局对象操作。对于文本编辑器的菜单组件如下。 “文件”菜单里: “编辑”菜单里“字体”菜单里 4. 论述程序逻辑的实现,包括类的设计、对象的协作过程等,必要时加以各种图形和表格辅助论述。不得以粘贴代码的方式代替设计部分。 首先,自定义一个editor类,该类继承了JFrame类和ActionListener、ItemListener 接口。在主类的主方法中,用editor创建一个对象bianji。 在editor的构造方法中设计好第一个界面的布局和组件。设计一个菜单条组件,

用Java程序编写一个记事本程序的 设计报告 学习中心(点):泾阳学习中心 专业:计算机科学与技术 层次:专升本 姓名:李永固 批次: 112

目录 一、设计分析 (1) 二、程序结构 (1) 三、各模块的功能及程序说明 (2) 1、类设计 (2) 2、主要功能代码实现 (4) 四、源程序 (9) 五、操作方法 (20) 六、试验结果 (20) 七、设计体会 (22)

用Java程序编写一个记事本程序的设计报告 一、设计要求 1.用图形用户界面实现。 2.能实现编辑、保存、另存为、查找替换等功能。 二、程序结构 流程图: 图1基本流程图

本Java文本编辑器功能设计如下: 图2基本功能图 三、各模块的功能及程序说明 1、类设计 (1)类MiniText ,包括initTextPane方法初始化面板,initMenu()方法初始化菜单,initAboutDialog()方法初始化关于对话框,initToolBar()方法初始化工具栏,initRightKey()方法初始化右键设置,等方法。类成员如下:

(2)类Loading (实现登陆)类成员如下:

(3)类runtime (实现时间同步) 类成员如下: (4)类MainFunction (包含主函数) 类成员如下: 2、主要功能代码实现 (1)登陆界面: class Loading extends JWindow implements Runnable { Thread dluThread=null; private JProgressBar progress; public Loading() { setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));//设置光标为等待状态JPanel dlu = new JPanel(new BorderLayout()); URL url = getClass().getResource("/images/loading.jpg"); if(url != null){ dlu.add(new JButton(new ImageIcon(url)), BorderLayout.CENTER); } progress = new JProgressBar(1,100); progress.setStringPainted(true); progress.setBorderPainted(true); progress.setBackground(Color.white); progress.setForeground(Color.green); dlu.add(progress,BorderLayout.SOUTH); setContentPane(dlu); //设置窗口属性为登陆面板属性 Dimension screen = getToolkit().getScreenSize(); pack(); //显示登陆界面 setLocation(screen.width/4,screen.height/4); //设置登陆界面始终在屏幕中间显示 } public void start(){ // this.toFront(); dluThread=new Thread(this); dluThread.start(); } public void run(){ show();

用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类至少应该具有的方法和功能描述(如表一所示)。 3.2 calculatorFrame类的设计 calculatorFrame类实现整体功能,包括窗体的初始化、各种用户事件监听和响应(菜单、运算、结果显示等等)。 1.父类和主要接口 设计calculator整体窗口特性继承自JFrame类。 为了对用户命令做出响应(如帮助菜单栏弹出窗口),calculatorFrame类必须能够监听到用户的命令,因此设计calculatorFrame类实现ActionListener接口。 2.主要方法 下面以表格的形式列出calculatorFrame类至少应该具有的方法和功能描述(如表二所示)。 3.基本效果 图二为calculator的基本效果图。

《Java语言程序设计》课程设计报告 设计题目:制作一个文本编辑器 分院:电信分院 班级: 姓名: 学号: 指导教师:黄建华 实验地点:三教机六 课设时间: 2009-12-20——2009-12-25 二OO九年十二月二十五日

《Java语言程序设计课程设计》 目录 一、设计思路 (2) 二、设计过程 (3) 三、测试结果 (12) 四、心得体会 (13) 五、程序代码 (14)

一、设计思路 (一)设计概念 要制作一个文本编辑器,首先得理清思路,要做一个什么样的文本编辑器,做成的编辑器要求要实现哪些功能,要实现这些功能分别需要用到什么方法以及怎样组织编辑器的框架结构等等问题。现把我的设计思路简要介绍如下: 1、明确设计要求 首先要创建了一个窗体,标题为“×××设计的文本编辑器”,设计要要编辑文件和编辑这两个菜单项,要求在文件菜单项上添加新建、打开、保存、退出四个下拉子菜单,要求当用户单击新建时就可以新建一个空白文档;当单击打开时可以从已有的目录下打开需要打开的文本文件,在原有文件中可以选择要打开的文件;当单击保存时可以出现保存的路径,选择自己要保存到的路径将文件保存到指定的文件夹中;单击退出菜单时退出文件的下拉菜单。在编辑菜单下的子菜单复制,可以进行对文本的复制。在文本区要求当单击鼠标右键时可以弹出菜单,要求有两个子菜单为复制和字体,通过单击字体菜单可以实现对字体改变。而且在窗体的右上方有三个按钮可以实现最小化、最大化、和关闭。而且用户也可以根据自己的需要改变窗体的大小。 2、确定设计思路即设计步骤(必须想到要用到哪几个方面的程序、包、方法、以及基本的程序语言) (1)创建一个窗体,包括构造一个文本域为编辑器各种功能的实现提供一个伸展平台;(2)新建一个空的菜单条,然后添加菜单项(文件菜单和编辑菜单); (3)设计程序在菜单项下添加子菜单,文本菜单对应新建、打开、保存和退出,编辑菜单包括的子菜单为复制和粘贴; (4)添加右键快捷弹出式菜单,包括复制、字体等菜单项。 3、上两步都完成以后,就进入程序的检测运行阶段即所谓的编译运行,看是否符合设计要求,是否达到理想中的那种效果,在测验阶段,要一步一步完善自己的作品直至真正意义上的完成整个设计过程。

封面 《Java语言程序设计》课程设计报告 设计题目:制作一个文本编辑器 分院:电信分院 班级: 姓名: 学号: 指导教师:黄建华 实验地点:三教机六 课设时间:2009-12-20——2009-12-25 二OO九年十二月二十五日

《Java语言程序设计课程设计》 目录 一、设计思路 (2) 二、设计过程 (3) 三、测试结果 (12) 四、心得体会 (13) 五、程序代码 (14)

一、设计思路 (一)设计概念 要制作一个文本编辑器,首先得理清思路,要做一个什么样的文本编辑器,做成的编辑器要求要实现哪些功能,要实现这些功能分别需要用到什么方法以及怎样组织编辑器的框架结构等等问题。现把我的设计思路简要介绍如下: 1、明确设计要求 首先要创建了一个窗体,标题为“×××设计的文本编辑器”,设计要求是要编辑文件和编辑这两个菜单项,要求在文件菜单项上添加新建、打开、保存、退出四个下拉子菜单,要求当用户单击新建时就可以新建一个空白文档;当单击打开时可以从已有的目录下打开需要打开的文本文件,在原有文件中可以选择要打开的文件;当单击保存时可以出现保存的路径,选择自己要保存到的路径将文件保存到指定的文件夹中;单击退出菜单时退出文件的下拉菜单。在编辑菜单下的子菜单复制,可以进行对文本的复制。在文本区内要求当单击鼠标右键时可以弹出菜单,要求有两个子菜单为复制和字体,通过单击字体菜单可以实现对字体改变。而且在窗体的右上方有三个按钮可以实现最小化、最大化、和关闭。而且用户也可以根据自己的需要改变窗体的大小。 2、确定设计思路即设计步骤(必须想到要用到哪几个方面的程序、包、方法、以及基本的程序语言) (1)创建一个窗体,包括构造一个文本域为编辑器各种功能的实现提供一个伸展平台;(2)新建一个空的菜单条,然后添加菜单项(文件菜单和编辑菜单); (3)设计程序在菜单项下添加子菜单,文本菜单对应新建、打开、保存和退出,编辑菜单包括的子菜单为复制和粘贴; (4)添加右键快捷弹出式菜单,包括复制、字体等菜单项。 3、上两步都完成以后,就进入程序的检测运行阶段即所谓的编译运行,看是否符合设计要求,是否达到理想中的那种效果,在测验阶段,要一步一步完善自己的作品直至真正意义上的完成整个设计过程。

代码编辑器的java实现 摘要 如果我们把不同的程序开发人员比作三国演义中的各路诸侯大将的话,那么代码编辑器绝对可以称之我们手中的神兵利器。对于每个程序猿来说,内心的深处都想有一把自己的“青龙偃月刀”和属于自己的一个代码编辑器。我也有这个想法,我也想自己写一个代码编辑器来满足我的内心深处。所以这次java的课程作业我选择了这个题目! 关键词:Java;代码编辑器;关键字变色;编译和运行

前言 通过一学期的Java学习,我对Java的理论知识有了一些了解。但是,只有理论联系实际才能更好的掌握理论,所以这次Java课程设计我选择了Java程序编辑器这个课题,希望可以锻炼自己的动手能力。我上交给老师您的代码是我参考的网上的一个牛人写的代码,并在他的代码上进行了功能的增加,至于我增加了多少功能,我会论文的附录中给出详细的对比。 1. 软件的定义 编写一个界面像Windows系统的记事本的代码编辑器,功能比记事本更强大(针对某一方面)具备以下功能: (1)打开、保存文件功能; (2)能够识别Java中的关键字并能将关键字以高亮的形式显示出来; (3)能够批量的删除代码中的注释; (4)能通过按下按钮调用DOS窗口; (5)能编译和运行Java程序; (6)能够检查括号是否匹配。 2.开发环境 IDE: eclipse JDK: jdk-7u45-windows-x64 OS:Windows 7 —X64 3.代码的详细说明 主界面: syntaxcolor.v4包中的DemoFrame.java文件,主界面就是一个Frame,然后在上面加上一个菜单栏,一个工具栏和两个Panel,一个panel里面放着JTextPane,另一个里面放着一个几个JLable,用来显示当前鼠标是在第几行,第几列,该Panel放在Frame最下

Java课程设计报告 题目:文本编辑器 年级专业:07级信息与计算科学 学号: 20074043031 20074043032 20074043033 20074043034 学生姓名:周勇李朝黄峰陈爽指导老师:彭胜 完成时间:2010年 7月 1 日

目录 摘要 (3) 前言 (3) 1 需求分析 (4) 1.1需求分析 (4) 1.2功能设计 (4) 2 概要设计 (4) 2.1程序设计思路 (4) 2.2程序运行界面 (5) 2.3程序相关说明 (5) 3 程序详细设计与分析 (6) 3.1初始化组件 (7) 3.2构建菜单栏及其下拉菜单及其事件监听 (7) 3.3异常处理 (8) 4.测试分析 (9) 5.课程设计总结 (11) 6.参考文献 (11) 7. 附录 (12) 文本编辑器程序的设计

摘要 该报告中的程序是使用Java程序编写,能够进行输入文字操作,并具有,打开文件,保存文件,另存为,退出,撤消,剪切,复制,粘贴,删除,自动换行,关于等功能,该程序主要用到了Java swing包和事件监听等。 关键字:文本编辑器,Java语言,JCreator 前言 Java的前身是Oak,它一开始只是被应用于消费性电子产品中。后来它的开发者们发现它还可以被用于更大范围的Internet上。1995年,Java语言的名字从Oak编程了Java。 1997年J2SE1.1发布。1998年J2SE1.2发布,标志Java2的诞生。十多年来,Java编程语言及平台成功地运用在网络计算及移动等各个领域。Java的体系结构由Java语言、Java class、Java API、Java虚拟机组成。它具有简单、面向对象、健壮、安全、结构中立、可移植和高效能等众多优点。Java支持多线程编程,Java运行时系统在多线程同步方面具有成熟的解决方案。Java的平台标准有Java ME,Java SE和Java EE。Java发展到今天,它的卓越成就及在业界的地位毋庸置疑。目前在众多的支持Java的开发工具中主要的7有Java Development Kit,NetBeans,Jcreator,JBuilder,JDeveloper和Eclipse等。其中Java Development Kit 简称JDK是大多开发工具的基础。以上的每种开发工具都有优缺点,对于开发者来说,重要的是要根据自己的开发规模、开发内容和软硬件环境等因素来选择一种合适的开发工具。 在本程序设计中,因为需要开发的是记事本程序,规模较小,内容较少,所以选择了适合初学者使用的JCreator开发工具。 1需求分析 1.1需求分析 现在网络上各种文本编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft

制作一个文本编辑器java课程设计报 告

《Java语言程序设计》 课程设计报告 设计题目:制作一个文本编辑器 分院:电信分院 班级: 姓名: 学号: 指导教师:黄建华 实验地点:三教机六 课设时间: -12-20—— -12-25 二OO九年十二月二十五日

《Java语言程序设计课程设计》 目录 一、设计思路 (2) 二、设计过程 (3) 三、测试结果 (12) 四、心得体会 (13) 五、程序代码 (14)

一、设计思路 (一)设计概念 要制作一个文本编辑器,首先得理清思路,要做一个什么样的文本编辑器,做成的编辑器要求要实现哪些功能,要实现这些功能分别需要用到什么方法以及怎样组织编辑器的框架结构等等问题。现把我的设计思路简要介绍如下: 1、明确设计要求 首先要创立了一个窗体,标题为“×××设计的文本编辑器”,设计要求是要编辑文件和编辑这两个菜单项,要求在文件菜单项上添加新建、打开、保存、退出四个下拉子菜单,要求当用户单击新建时就能够新建一个空白文档;当单击打开时能够从已有的目录下打开需要打开的文本文件,在原有文件中能够选择要打开的文件;当单击保存时能够出现保存的路径,选择自己要保存到的路径将文件保存到指定的文件夹中;单击退出菜单时退出文件的下拉菜单。在编辑菜单下的子菜单复制,能够进行对文本的复制。在文本区内要求当单击鼠标右键时能够弹出菜单,要求有两个子菜单为复制和字体,经过单击字体菜单能够实现对字体改变。而且在窗体的右上方有三个按钮能够实现最小化、最大化、和关闭。而且用户也能够根据自己的需要改变窗体的大小。 2、确定设计思路即设计步骤(必须想到要用到哪几个方面的程

制作一个文本编辑器-java课程设计报告

封面 《Java语言程序设计》课程设计报告 设计题目:制作一个文本编辑器 分院:电信分院 班级: 姓名: 学号: 指导教师:黄建华 实验地点:三教机六 课设时间:2009-12-20——2009-12-25 二OO九年十二月二十五日

《Java语言程序设计课程设计》 目录 一、设计思 路…………………………………………… (2) 二、设计过 程…………………………………………… (3) 三、测试结 果…………………………………………… (12) 四、心得体 会…………………………………………… (13) 五、程序代 码…………………………………………… (14)

一、设计思路 (一)设计概念 要制作一个文本编辑器,首先得理清思路,要做一个什么样的文本编辑器,做成的编辑器要求要实现哪些功能,要实现这些功能分别需要用到什么方法以及怎样组织编辑器的框架结构等等问题。现把我的设计思路简要介绍如下: 1、明确设计要求 首先要创建了一个窗体,标题为“×××设计的

文本编辑器”,设计要求是要编辑文件和编辑这两个菜单项,要求在文件菜单项上添加新建、打开、保存、退出四个下拉子菜单,要求当用户单击新建时就可以新建一个空白文档;当单击打开时可以从已有的目录下打开需要打开的文本文件,在原有文件中可以选择要打开的文件;当单击保存时可以出现保存的路径,选择自己要保存到的路径将文件保存到指定的文件夹中;单击退出菜单时退出文件的下拉菜单。在编辑菜单下的子菜单复制,可以进行对文本的复制。在文本区内要求当单击鼠标右键时可以弹出菜单,要求有两个子菜单为复制和字体,通过单击字体菜单可以实现对字体改变。而且在窗体的右上方有三个按钮可以实现最小化、最大化、和关闭。而且用户也可以根据自己的需要改变窗体的大小。 2、确定设计思路即设计步骤(必须想到要用到哪几个方面的程序、包、方法、以及基本的程序语言) (1)创建一个窗体,包括构造一个文本域为编辑器各种功能的实现提供一个伸展平台;(2)新建一个空的菜单条,然后添加菜单项(文

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);

J a v a编写的文本编辑器 Company number:【0089WT-8898YT-W8CCB-BUUT-202108】

界面: 代码(编译后可直接运行): ; import .*; import .*; public class MyTxt { public static void main(String[] args) { Aframe frame = new Aframe(); ; (); } } class Aframe extends JFrame { public Aframe() { setTitle("我的记事本"); setSize(WIDTH, HEIGHT); Container contentPane = getContentPane(); JPanel txtPanel = new JPanel(); JPanel comboxPanel = new JPanel(); JPanel textPanel = new JPanel(); txtArea=new JTextArea("",17,40); JScrollPane scrollPane =new JScrollPane(txtArea); (scrollPane); (comboxPanel,; (txtPanel); (textPanel,; ."}; daxiaobox=new JComboBox(dax); (daxiaobox); (true); (true); (true); (new FlowLayout);ddUndoableEditListener(um); } quals("")) { (""); }

《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记事本帮助文件,关于记事本则是作者和版权信息。 2.3模块说明图 类层次调用关系图

Java程序设计实验报告 学生姓名:邵强 学号:0706550222 课程编号: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); }

面向对象课程设计报告第 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();

Java实验报告 实验题目实验三、类与对象 实验时间2011年11月1日第8周星期二5,6节 实验地点信息系统实验室 指导老师刘友军 学生姓名李继红学号2009214604 一、实验目的: 1.让学生使用类来封装对象的属性和功能。 2.让学生掌握类变量与实例变量,以及类方法与实例方法的区别。 3.掌握包的建立和导入。 二、实验要求: 模板1:编写一个Java 应用程序,该程序中有2个类:Trangle、Lader,分别用来刻画“三角形”和“梯形”。 具体要求如下: (1)Trangle 类具有类型为double 的三个边,以及周长、面积属性,Trangle 类具有返回周长、面积以及修改三个边的功能。另外,Trangle 类还具 有一个Boolean型的属性,该属性用来判断三个数能否构成一个三角形。 (2)Lader 类具有类型为double 的上底、下底、高、面积属性,具有返回面积的功能。 (3)Circle 类具有类型为double 的半径、周长和面积属性.具有返回周长、面积的功能。 模板2:按程序模板的要求编写源文件特别注意程序的输出结果,并能正确地解释输出的结果。 模板3:将模板1 给出的Java 源文件命名为Trangle.java,将编译后得到的字节码文件复制到C:/1000/tom/jiafei 目录中。 三、实验内容与步骤: 练习一: class Trangle{ double sideA,sideB,sideC,area,length; boolean boo; public Trangle(double a,double b,double c) { this.sideA=a; this.sideB=b; this.sideC=c; if((a+b>c)&&(a+c>b)&&(b+c>a)) boo=true; else boo=false; } double getLength() {

相关文档
最新文档