java求助编辑文本编辑器
基本要求:题目所实现的程序必须保证有以下技术实现:
GUI界面;
菜单
事件处理
对话框
文件读写
异常[可选]
多线程[可选,但对游戏则为必选]
要求:
设计一个简单的文本编辑器,可以实现多文件处理、实现文件的创建、浏览、编辑(允许文本复制、修改、删除)、对已经修改的文件进行保存或以另外的文件名称保存
------解决方案--------------------
这是我之前写的...你自己看看吧!
import java.awt.*;
import java.awt.event.*;
public class test1 { // 定义主类:
	public static void main(String args[]) {
		MyMenuFrame mf = new MyMenuFrame();
		mf.setSize(new Dimension(300, 200)); // 用setSize( )方法指定窗口的初始大小
		mf.setVisible(true); // 使窗口可见
	}
}
class MyMenuFrame extends Frame implements ActionListener, ItemListener// 定义窗口
{
	MenuBar m_MenuBar;
	Menu menuFile, menuEdit, m_Edit_Paste;
	MenuItem mi_File_Open, mi_File_Close, mi_File_Exit, mi_Edit_Copy;
	MenuItem pi_New, pi_Del, pi_Pro, mi_Paste_All, mi_Paste_Part;
	CheckboxMenuItem mi_Edit_Cut;
	PopupMenu popM;
	TextArea ta;
	MyMenuFrame() // 构造函数
	{
		super("拥有菜单的窗口"); // 指定窗口标题
		ta = new TextArea("", 5, 20);
		ta.addMouseListener(new HandleMouse(this)); // 文本域响应鼠标事件
		add("Center", ta);
		popM = new PopupMenu(); // 创建弹出窗口
		pi_New = new MenuItem("新建"); // 为弹出窗口创建菜单子项
		pi_New.addActionListener(this); // 使菜单子项响应动作事件
		popM.add(pi_New); // 为弹出菜单加入菜单子项
		pi_Del = new MenuItem("删除");
		pi_Del.addActionListener(this);
		popM.add(pi_Del);
		pi_Pro = new MenuItem(" 属性 ");
		pi_Pro.addActionListener(this);
		popM.add(pi_Pro);
		ta.add(popM); // 将弹出窗口加在文本域上
		m_MenuBar = new MenuBar();// 创建菜单条
		menuFile = new Menu("文件"); // 创建菜单子项并指定快捷键
		mi_File_Open = new MenuItem("打开", new MenuShortcut('o'));
		mi_File_Close = new MenuItem("关闭");
		mi_File_Exit = new MenuItem("退出");
		mi_File_Exit.setShortcut(new MenuShortcut('x')); // 设置菜单子项的快捷键
		mi_File_Open.setActionCommand("打开"); // 再设置命令名
												// mi_File_Exit.setActionCommand(“退出”);
												// //以便动作响应程序调用
		mi_File_Open.addActionListener(this); // 使菜单子项响应动作事件
		mi_File_Close.addActionListener(this);
		menuFile.add(mi_File_Open); // 把菜单子项加入菜单项
		menuFile.add(mi_File_Close);
		menuFile.addSeparator(); // 加一条横向分割线
		menuFile.add(mi_File_Exit);
		m_MenuBar.add(menuFile); // 把菜单项加入菜单条
		menuEdit = new Menu("编辑");
		mi_Edit_Copy = new MenuItem("复制");
		mi_Edit_Cut = new CheckboxMenuItem("剪切"); // 创建选择菜单子项
		m_Edit_Paste = new Menu("粘贴"); // 创建二级菜单项
		mi_Paste_All = new MenuItem("全部粘贴");
		mi_Paste_Part = new MenuItem("部分粘贴");
		mi_Edit_Copy.addActionListener(this);
		mi_Edit_Cut.addItemListener(this); // 检测盒菜单子项产生选择事件
		m_Edit_Paste.add(mi_Paste_Part); // 为二级菜单项加入菜单子项
		m_Edit_Paste.add(mi_Paste_All);
		mi_Paste_Part.addActionListener(this);
		mi_Paste_All.addActionListener(this);
		menuEdit.add(mi_Edit_Copy);
		menuEdit.add(mi_Edit_Cut);
		menuEdit.addSeparator();
		menuEdit.add(m_Edit_Paste); // 把二级菜单项加入菜单项
		m_MenuBar.add(menuEdit);
		this.setMenuBar(m_MenuBar); // 把菜单条加入整个Frame容器
	}
	public void actionPerformed(ActionEvent e) // 响应动作事件
	{
		if (e.getActionCommand() == "退出") // 关闭窗口退出程序
		{
			dispose();
			System.exit(0);
		} else
			// 否则显示选择的命令名
			ta.setText("\n\n\n\n\n\n\t\t\	t" + e.getActionCommand());
	}
	public void itemStateChanged(ItemEvent e) // 响应CheckboxMenuItem单击事件
	{
		if (e.getSource() == mi_Edit_Cut)
			if (((CheckboxMenuItem) e.getSource()).getState()) // 查看是否选中
				ta.setText("\n\n\n\n\n\n\t\t\t" + "选择了" // 因为无命令名,所以用标签
						+ ((CheckboxMenuItem) e.getSource()).getLabel());