菜单项组件添加进编辑器后,就可以对其添加事件响应了。例如点击<Open>菜单项,便会弹出打开文件对话框并打开文件。
在这之前先做两件事:
1. 生成编辑框中的可编辑文本区域
2. 生成Open菜单项
生成编辑框中的可编辑文本区域
之前在系列二中,生成了编辑器的基本框架。作为编辑框的容器,将一个滚动栏(JScrollPane)放入了框架中。现在要实现可编辑文本框,需要将对应类
JTextArea的对象放入到滚动栏中。JTextArea是一个显示纯文本的多行区域。
但这种添加不是直接的,而需要一个视点(Viewport)作为中介。
关于视点的作用,一个形象的例子是拍照。如果将滚动栏比作相机(显示编辑框内容),JTextArea比作风景人物(被显示的内容)的话,视点就是相机的取景
器。拍照时,总是通过取景器来确定照片内容是否合适。
因此,生成框架的主程序MEditor.java应该添加如下代码:
- public class MEditor implements {
- public void createWindow() {
- ...
- // 初始化文本编辑框(7行10列的编辑框)
- textAreaEditor = new TextAreaEditor(7, 10);
- initTextAreaEditor(textAreaEditor);
- // 将文本编辑框放入滚动栏
- JScrollPane scroller = new JScrollPane();
- JViewport port = scroller.getViewport();
- port.add(textAreaEditor);
- // 将滚动栏放入框架
- frame.getContentPane().add("Center", scroller);
- ...
- }
- /**
- * textAreaEditor的初始化工作
- * @param editor
- */
- private void initTextAreaEditor(TextAreaEditor editor) {
- // 进行文本编辑区的初始化设置
- editor.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
- editor.setFont(new Font("Courier", Font.PLAIN, 15));
- editor.setWrapStyleWord(true);
- }
- }
另外生成文本区域类TextAreaEditor.java,代码如下:
- /**
- * 编辑文本显示框内容类
- *
- * @author mitume
- * @version JavaEditor v1.0
- * @since 2011/07/02
- */
- public class TextAreaEditor extends JTextArea {
- /*
- * 文本编辑区的字体
- */
- private Font font;
- /*
- * 文本编辑区文本
- */
- private String editText;
- /*
- * 构造器
- */
- public TextAreaEditor(int rows, int cols) {
- super(rows, cols);
- }
- }
生成Open菜单项
Open菜单项的生成,与系列三中的New菜单生成过程类似。在FileMenu.java中添加代码如下:
- public class FileMenu extends JMenu implements EditorMenu {
- ...
- static private void genEditorMenu() {
- ...
- menuFileNew = new JMenuItem("New", 'N');
- menuFileOpen = new JMenuItem("Open", 'O');
- ...
- fileMenu.add(menuFileNew);
- fileMenu.add(menuFileOpen);
- ...
- }
- ...
- static private JMenuItem menuFileNew = null;
- static private JMenuItem menuFileOpen = null;
- }
最后,看看效果图
转载于:https://blog.51cto.com/mitume/617528