基本要求:题目所实现的程序必须保证有以下技术实现:
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());