import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
import javax.swing.event.*;
public class IJMFrame extends JFrame {
Document document = null;
JTextArea textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
EditController controller;
//------ 定义菜单变量 ------//
JMenuBar menuBar = new JMenuBar();
JMenu menuFile = new JMenu("文件");
JMenu menuEdit = new JMenu("编辑");
JMenu menuFormat = new JMenu("格式");
JPopupMenu memuPopup = new JPopupMenu();
JMenuItem itemNew = new JMenuItem("新建");
JMenuItem itemOpen = new JMenuItem("打开");
JMenuItem itemSave = new JMenuItem("保存");
JMenuItem itemSaveAs = new JMenuItem("另存");
JMenuItem itemExit = new JMenuItem("退出");
JMenuItem itemUndo = new JMenuItem("撤消");
JMenuItem itemCut = new JMenuItem("剪切");
JMenuItem itemCopy = new JMenuItem("复制");
JMenuItem itemPaste = new JMenuItem("粘贴");
JMenuItem itemDelete = new JMenuItem("删除");
JMenuItem itemFind = new JMenuItem("查找");
JMenuItem itemReplace = new JMenuItem("替换");
JMenuItem itemSelectAll = new JMenuItem("全选");
JMenuItem itemFont = new JMenuItem("字体");
//------------定义右键菜单------------------------//
JMenuItem popupMenu_Undo=new JMenuItem("撤销");
JMenuItem popupMenu_Cut=new JMenuItem("剪切");
JMenuItem popupMenu_Copy=new JMenuItem("复制");
JMenuItem popupMenu_Paste=new JMenuItem("粘贴");
JMenuItem popupMenu_Delete=new JMenuItem("删除");
JMenuItem popupMenu_SelectAll=new JMenuItem("全选");
public IJMFrame() {
super("记事本");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setJMenuBar(menuBar);//创建新的菜单栏
getContentPane().add(scrollPane);
document = textArea.getDocument();
textArea.setLineWrap(true);// 默认为换行
textArea.setWrapStyleWord(true);
//-- 设置菜单 --//
itemUndo.setEnabled(false);
menuBar.add(menuFile);
menuBar.add(menuEdit);
menuBar.add(menuFormat);
menuFile.add(itemNew);
menuFile.add(itemOpen);
menuFile.add(itemSave);
menuFile.add(itemSaveAs);
menuFile.addSeparator();
menuFile.add(itemExit);
menuEdit.add(itemUndo);
menuEdit.addSeparator();
menuEdit.add(itemCut);
menuEdit.add(itemCopy);
menuEdit.add(itemPaste);
menuEdit.add(itemDelete);
menuEdit.addSeparator();
menuEdit.add(itemFind);
menuEdit.add(itemReplace);
menuEdit.add(itemSelectAll);
menuFormat.add(itemFont);
popupMenu_Undo.setEnabled(false); // 撤消选项初始设为不可用
memuPopup.add(popupMenu_Undo);
memuPopup.addSeparator();
memuPopup.add(popupMenu_Cut);
memuPopup.add(popupMenu_Copy);
memuPopup.add(popupMenu_Paste);
memuPopup.add(popupMenu_Delete);
memuPopup.addSeparator();
memuPopup.add(popupMenu_SelectAll);
//-- 增加菜单的侦听者 --//
controller = new EditController(this);
itemNew.addActionListener(controller);
itemOpen.addActionListener(controller);
itemSave.addActionListener(controller);
itemSaveAs.addActionListener(controller);
itemExit.addActionListener(controller);
itemUndo.addActionListener(controller);
itemCut.addActionListener(controller);
itemCopy.addActionListener(controller);
itemPaste.addActionListener(controller);
itemDelete.addActionListener(controller);
itemFind.addActionListener(controller);
itemReplace.addActionListener(controller);
itemSelectAll.addActionListener(controller);
itemFont.addActionListener(controller);
popupMenu_Undo.addActionListener(controller);
popupMenu_Cut.addActionListener(controller);
popupMenu_Copy.addActionListener(controller);
popupMenu_Paste.addActionListener(controller);
popupMenu_Delete.addActionListener(controller);
popupMenu_SelectAll.addActionListener(controller);
document.addDocumentListener(controller);
document.addUndoableEditListener(controller);
addWindowListener(controller);
MouseAdapter mAdapter=new MouseAdapter(){
public void mousePressed(MouseEvent e) {
checkForTriggerEvent(e);
}
public void mouseReleased(MouseEvent e) {
checkForTriggerEvent(e);
}
private void checkForTriggerEvent(MouseEvent e) {
if (e.isPopupTrigger())
memuPopup.show(e.getComponent(), e.getX(), e.getY());// 在组件调用者的坐标空间中的位置
// X、Y
// 显示弹出菜单。
}
};
textArea.addMouseListener(mAdapter);
setSize(600,600);
setVisible(true);
}public static void main(String[] args) {
new IJMFrame();}
}