菜单项组件添加进编辑器后,就可以对其添加事件响应了。例如点击<Open>菜单项,便会弹出打开文件对话框并打开文件。

  在这之前先做两件事:
    1. 生成编辑框中的可编辑文本区域
   2. 生成Open菜单项

  生成编辑框中的可编辑文本区域

  之前在系列二中,生成了编辑器的基本框架。作为编辑框的容器,将一个滚动栏(JScrollPane)放入了框架中。现在要实现可编辑文本框,需要将对应类 JTextArea的对象放入到滚动栏中。JTextArea是一个显示纯文本的多行区域。
  但这种添加不是直接的,而需要一个视点(Viewport)作为中介。
  关于视点的作用,一个形象的例子是拍照。如果将滚动栏比作相机(显示编辑框内容),JTextArea比作风景人物(被显示的内容)的话,视点就是相机的取景 器。拍照时,总是通过取景器来确定照片内容是否合适。

  因此,生成框架的主程序MEditor.java应该添加如下代码:
 
  
  1. public class MEditor implements { 
  2.  
  3.     public void createWindow() { 
  4.  
  5.         ... 
  6.         // 初始化文本编辑框(7行10列的编辑框)
  7.      textAreaEditor = new TextAreaEditor(710); 
  8.      initTextAreaEditor(textAreaEditor); 
  9.  
  10.         // 将文本编辑框放入滚动栏 
  11.      JScrollPane scroller = new JScrollPane(); 
  12.      JViewport port = scroller.getViewport(); 
  13.      port.add(textAreaEditor); 
  14.  
  15.         // 将滚动栏放入框架 
  16.      frame.getContentPane().add("Center", scroller); 
  17.         ... 
  18.     } 
  19.  
  20.     /** 
  21.      * textAreaEditor的初始化工作 
  22.      * @param editor 
  23.      */ 
  24.     private void initTextAreaEditor(TextAreaEditor editor) { 
  25.  
  26.         // 进行文本编辑区的初始化设置 
  27.         editor.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); 
  28.         editor.setFont(new Font("Courier", Font.PLAIN, 15)); 
  29.      editor.setWrapStyleWord(true); 
  30.     } 
  另外生成文本区域类TextAreaEditor.java,代码如下:
 
  
  1. /** 
  2.  * 编辑文本显示框内容类 
  3.  *  
  4.  * @author mitume 
  5.  * @version JavaEditor v1.0 
  6.  * @since 2011/07/02 
  7.  */ 
  8. public class TextAreaEditor extends JTextArea { 
  9.  
  10.     /* 
  11.      * 文本编辑区的字体 
  12.      */ 
  13.     private Font font; 
  14.      
  15.     /* 
  16.      * 文本编辑区文本 
  17.      */ 
  18.     private String editText; 
  19.  
  20.     /*  
  21.          * 构造器 
  22.          */ 
  23.     public TextAreaEditor(int rows, int cols) { 
  24.         super(rows, cols); 
  25.     }            
  生成Open菜单项

  Open菜单项的生成,与系列三中的New菜单生成过程类似。在FileMenu.java中添加代码如下:
 
  
  1. public class FileMenu extends JMenu implements EditorMenu { 
  2.  
  3.     ... 
  4.  
  5.     static private void genEditorMenu() { 
  6.  
  7.         ... 
  8.         menuFileNew = new JMenuItem("New"'N'); 
  9.         menuFileOpen = new JMenuItem("Open"'O'); 
  10.  
  11.         ... 
  12.  
  13.         fileMenu.add(menuFileNew); 
  14.         fileMenu.add(menuFileOpen); 
  15.         ... 
  16.     } 
  17.  
  18.     ... 
  19.     static private JMenuItem menuFileNew = null
  20.     static private JMenuItem menuFileOpen = null

  最后,看看效果图