1、五、参考资料以及文献六、小组成员以及联系方式一、软件系统分析和设计方案:1、功能需求分析 为给使用者提供方便,文本编辑器应该至少用以下功能: (1)所见即所得的文本输入功能 (2)基本的新建、打开、保存、另存为、退出功能 (3)方便的选中、复制、剪贴、粘贴、查找、替换等功能 (4)方便的快捷键以及右键弹出菜单功能 (5)另外,该软件支持拖拽功能,能将文件之间拖进来显示2、基本设计思路以及类的划分: (1)设计思路及步骤-界面设计 a、创建一个窗体,用于容纳需要显示的组件 b、定义六个菜单按钮File、Edit、Format、Search、Tools、Help,在定义 一个JMenuItem类型
2、的二维数组,并将其添加到相应的菜单上 c、定义一个菜单栏toolBar,在定义一个JButton类型的以为数组,并将其添加到toolBar上面 d、定义一个EditArea对象,将其放于窗体的中央 至此,效果图如下: 设计思路及步骤-功能设计 a、文件按钮可以被点选,当点击某个文件按钮时,会弹出当前文件按钮下的菜单项,并且每个菜单项也都添加上了事件响应 b、工具条上的每个图标按可以被点选,当单击某个图标的时候,会执行相应的操作 c、文本编辑框可以用来编辑、更改、删除等各种操作,可以改变文本的字体与颜色,可以设置背景色,并且右键单击鼠标时会弹出一个弹出菜单 d、可以直接将某个文本文件拖进文本框中
3、显示(2)类的设计-关系图 类的设计-主要方法以及属性MainFrameVariables: styles:menuBar: JmenuBarmenus: JmenumenuItems: JmenuItemtoolBar: JtoolBaricons: JButtonii: ImageIconssplitPane1: JsplitPanesplitPane2:er: EditAreaoa: OutputAreadirectoryArea: DirectorWindowMethods: return:MainFrame():closeWindow(): voidactionPerformed(e
4、:ActionEvent):EditArea Varibles:mf: MainFramepopuMenu: JpopuMenuclipboard: ClipboardpopuItems: JmenuItemsundo: UndoManager currentTextInTextArea: StringfindWord:findWordLength:intfindIndes: intreplaceLength: returns:EditArea(mf:MainFrame) newFile():openFile():saveFile() :saveAs():exit():cut():copy()
5、;paste():undo() voidfind();findNext():replace():help():about():Fon_Color_Frameea EditAreaFont_Color_frameActionEvent) voiditemStateChanged(e:ItemEvent) voidFileTransferHandlerFileTransterHandler ()canImpot(c:JCoponent,tflavors:DataFlavor): booleanimportDatac:JCoponent,t:Transferable):OutputArea(未全部实
6、现)DirectoryWindow(未全部实现)二、小组成员分工: 组长:三、代码分析-拖拽功能class FileTransferHandler extends TransferHandler private EditArea ea = null; public FileTransferHandler(EditArea ea) this.ea = ea; / 重写importData方法 public boolean importData(JComponent c, Transferable t) try / 返回要被传输的数据 /* * DataFlavor.javaFileListFla
7、vor:要将文件列表传入 * Java(及基础平台)或从中传出,需要使用此类型/子类型的 *DataFlavor 和 java.util.List * 的表示形式类。要求/保证列表的每个元素都是 java.io.File 类型。 */ List files = (List) t .getTransferData(DataFlavor.javaFileListFlavor); addFilesToFilePathList(files); return true; catch (UnsupportedFlavorException e) e.printStackTrace(); catch (IO
8、Exception e) return false; / 重写canImport方法 public boolean canImport(JComponent c, DataFlavor flavors) for (int i = 0; i flavors.length; i+) if (DataFlavor.javaFileListFlavor.equals(flavorsi) return true; private void addFilesToFilePathList(List files) for (Iterator iter = files.iterator(); iter.hasN
9、ext();) File file = (File) iter.next(); if (file.exists() ea.currentFile = file; String str = null; try FileReader fr = new FileReader(file); BufferedReader bfr = new BufferedReader(fr); if (ea.getText() != null) ea.setText(); while (str = bfr.readLine() != null) ea.append(str + n catch (Exception b
10、) 代码分析-更改字体对话框public class Font_Color_Frame extends JFrame implements ActionListener, ItemListener / 定义三个面板对象分别放窗体的北部,中间和南部 private JPanel pUp, pDown, pCenter; / 定义字体设置,颜色设置两个面板对象,通过卡片布局的方式放在中间面板上 private JPanel fPanel, cPanel; / 在字体设置面板上添加字体类型选择面板、字体样式选择面板和字体大小选择面板 private JPanel font_font, font_st
11、yle, font_size; private JPanel pDown_test, pDown_fontTest, pDown_button; private JPanel color_reg, color_exact, color_test1, color_test2; / 获取系统字体 private String font = GraphicsEnvironment.getLocalGraphicsEnvironment() .getAvailableFontFamilyNames(); / 定义用于设置字体样式数组 private String style = new String
12、Plain, ItalicBold, Italic& ; / 定义用于设置字体大小数组 private String size = new String 891011121416182022242628364872 / 定义常用颜色数组 private Color color = new Color Color.red, Color.blue, Color.cyan, Color.darkGray, Color.green, Color.lightGray, Color.magenta, Color.orange, Color.pink, Color.yellow, Color.black,
13、Color.white, Color.gray ; / 定义四个Button对象,分别为字体、颜色、确定、取消 private JButton jFont, jColor, jConfirm, jCancle; / 定义代表常用颜色的13个按钮数组 private JButton regColor = new JButton13; / 定义用于手动设置精确的字体颜色的三个文本框 private JTextField font_font_jtf, font_style_jtf, font_size_jtf; / 定义显示字体格式化后的效果的标签 private JLabel fontTestLa
14、bel; private JTextField colorSet = new JTextField new JTextField(3), new JTextField(3), new JTextField(3) ; private JButton jbApply = null; private JCheckBox jcb = null; / 定义一个CardLayout布局对象,用于字体设置面板和颜色设置面板之间的切换 / private MainFrame mf=null; private CardLayout card = null; / 构造函数,完成一些初始化工作 public Fon
15、t_Color_Frame(EditArea ea,MainFrame mf) this.mf=mf; jFont = new JButton(字体 jFont.addActionListener(this); jColor = new JButton(颜色 jColor.addActionListener(this); jConfirm = new JButton(确定 jConfirm.addActionListener(this); jCancle = new JButton(取消 jCancle.addActionListener(this); pUp = new JPanel();
16、pUp.add(jFont); pUp.add(jColor); pDown_fontTest = new JPanel(); pDown_fontTest.setLayout(new BorderLayout(); fontTestLabel = new JLabel(AaBbCc123, JLabel.CENTER); pDown_fontTest.add(fontTestLabel, BorderLayout.CENTER); pDown_fontTest.add(new JLabel(Preview:), BorderLayout.NORTH); pDown_button = new
17、JPanel(); pDown_button.add(jConfirm); pDown_button.add(jCancle); pDown_test = new JPanel(); pDown_test.setLayout(new BorderLayout(); pDown_test.add(pDown_fontTest, BorderLayout.NORTH); pDown = new JPanel(); pDown.setLayout(new BorderLayout(); pDown.add(pDown_fontTest, BorderLayout.NORTH); pDown.add(
18、pDown_button, BorderLayout.CENTER); font_font = new JPanel(); font_font.setLayout(new BorderLayout(); final JList jFont = new JList(font); jFont.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); jFont.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent e) if (e.getClickCount
19、() = 1) int index = jFont.locationToIndex(e.getPoint(); String family = (String) jFont.getModel().getElementAt( index); font_font_jtf.setText(family); fontTestLabel.setFont(new Font(family, fontTestLabel .getFont().getStyle(), fontTestLabel.getFont() .getSize(); ); font_font_jtf = new JTextField(10)
20、; font_font.add(new JLabel(Font: font_font.add(font_font_jtf, BorderLayout.SOUTH); font_font.add(new JScrollPane(jFont), BorderLayout.CENTER); font_style = new JPanel(); font_style.setLayout(new BorderLayout(); font_style_jtf = new JTextField(10); final JList jStyle = new JList(style); jStyle.setSel
21、ectionMode(ListSelectionModel.SINGLE_SELECTION); jStyle.addMouseListener(new MouseAdapter() int index = jStyle.locationToIndex(e.getPoint(); String style = (String) jStyle.getModel().getElementAt( font_style_jtf.setText(style); if (font_style_jtf.getText().equals() fontTestLabel.setFont(new Font(fon
22、tTestLabel.getFont() .getFamily(), Font.PLAIN, fontTestLabel .getFont().getSize(); else if (font_style_jtf.getText().equals( .getFamily(), Font.ITALIC, fontTestLabel .getFamily(), Font.BOLD | Font.ITALIC, fontTestLabel.getFont().getSize(); .getFamily(), Font.BOLD, fontTestLabel font_style.add(new JL
23、abel(Style: font_style.add(font_style_jtf, BorderLayout.SOUTH); font_style.add(new JScrollPane(jStyle), BorderLayout.CENTER); font_size = new JPanel(); font_size.setLayout(new BorderLayout(); font_size_jtf = new JTextField(10); final JList jSize = new JList(size); jSize.setSelectionMode(ListSelectionModel.SINGLE_SE