📄 jishiben.java
字号:
/*
* JiShiBen.java
*
* Created on 2007年12月23日, 下午2:51
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package jishiben;
/**
*
* @author Administrator
*/
import java.awt.font.TextAttribute;
import java.text.AttributedString;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.text.Document;
import javax.swing.event.*;
import javax.swing.event.DocumentListener;
import javax.swing.text.StyleConstants;
import javax.swing.undo.*;
import java.util.*;
import java.text.SimpleDateFormat;
public class JiShiBen extends JFrame implements ActionListener
{
private JFileChooser fileChooser = new JFileChooser();//文件选择对话框
private File fileName;
private JColorChooser color=new JColorChooser();
private JMenuBar m_MenuBar;//定义菜单栏
private JMenu menuFile,menuEdit,geShi,m_Edit_Paste,menuInsert,menuLook,menuApp;//定义菜单项
private JMenuItem mi_File_New,mi_File_Open,mi_File_Save,mi_File_LSave,mi_File_Exit,mi_Edit_Copy,mi_Edit_Cut;//定义菜单子项
private JMenuItem pi_New,pi_Del,pi_Pro,pi_Copy,pi_Cut,pi_Paste,pi_selectAll; //弹出窗口子项(新建/删除/属性)
private JMenuItem pasteItem,undoItem,redoItem,selectAll,findItem,replaceItem,findNextItem; //m_Edit_Paste菜单子项
private JMenuItem foreColor,backColor,metal,motif,windows;
private JMenuItem dateTime;//插入菜单子项
private JMenuItem numItem;//查看菜单子项
private JButton newBtn,openBtn,saveBtn,cutBtn,copyBtn,pasteBtn,undoBtn,redoBtn;
private JTextArea text ;
private Color color2;
private Color color1;
private JLabel statusBar ;//状态栏对象
private JPanel tools;
private JLabel time=new JLabel("日期时间 ");
private JTextField time1=new JTextField(18);
private String placeHolder="";
private String font;
private int m,num;
private boolean isChange = false;// 检测文档变化
Document document;
String[] items={"宋体","楷体","隶书","魏碑","黑体"};
String[] a={"1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30"};
private JComboBox comFont;
private JComboBox comSize;
UndoManager undo=new UndoManager();
UndoableEditListener ue=new UndoHander();
private JCheckBox bold,italic;
public JiShiBen()
{
super("小小记事本");//设置当前容器标题
time.setForeground(Color.RED);
time1.setForeground(Color.BLUE);
m_MenuBar=new JMenuBar(); //创建菜单条
this.setJMenuBar(m_MenuBar);//把菜单条加入整个JFrame容器
//创建文件及其子菜单
menuFile=new JMenu("文件(F)");//创建文件菜单项,
menuFile.setMnemonic('F');//设置菜单子项的快捷键
mi_File_New=new JMenuItem(" 新建",new ImageIcon("images/new.gif"));//创建菜单子项并指定快捷键
KeyStroke ks= KeyStroke.getKeyStroke(
KeyEvent.VK_N,InputEvent.CTRL_MASK);
mi_File_New.setAccelerator(ks);
mi_File_Open=new JMenuItem(" 打开",new ImageIcon("images/open.gif"));//创建菜单子项并指定快捷键
KeyStroke ko= KeyStroke.getKeyStroke(
KeyEvent.VK_O,InputEvent.CTRL_MASK);
mi_File_Open.setAccelerator(ko);
mi_File_Save=new JMenuItem(" 保存",new ImageIcon("images/save.gif"));
KeyStroke kb= KeyStroke.getKeyStroke(
KeyEvent.VK_S,InputEvent.CTRL_MASK);
mi_File_Save.setAccelerator(kb);
mi_File_LSave=new JMenuItem(" 另存为",new ImageIcon("images/SaveAs.gif"));
menuFile.addSeparator();
mi_File_Exit=new JMenuItem(" 退出(x)",new ImageIcon("images/exit.gif"));
mi_File_Exit.setMnemonic('x');//设置菜单子项的快捷键
mi_File_Open.setActionCommand("打开");//再设置命令名
mi_File_Exit.setActionCommand("退出");//以便动作响应程序调用
menuFile.add(mi_File_New);//把菜单子项加入菜单项
menuFile.add(mi_File_Open);//把菜单子项加入菜单项
menuFile.add(mi_File_Save);//把菜单子项加入菜单项
menuFile.add(mi_File_LSave);
menuFile.addSeparator();//加一条横向分割线
menuFile.add(mi_File_Exit);
m_MenuBar.add(menuFile);//将菜单项加入菜单栏
//创建编辑菜单项,创建菜单子项并指定快捷键
menuEdit=new JMenu("编辑(E)");//创建菜单项,创建菜单子项并指定快捷键
menuEdit.setMnemonic('E');
mi_Edit_Copy=new JMenuItem(" 复制",new ImageIcon("images/copy.gif"));
KeyStroke kc= KeyStroke.getKeyStroke(
KeyEvent.VK_C,InputEvent.CTRL_MASK);
mi_Edit_Copy.setAccelerator(kc);
mi_Edit_Cut=new JMenuItem(" 剪切",new ImageIcon("images/cut.gif"));//创建选择菜单子项
KeyStroke kx= KeyStroke.getKeyStroke(
KeyEvent.VK_X,InputEvent.CTRL_MASK);
mi_Edit_Cut.setAccelerator(kx);
pasteItem=new JMenuItem(" 粘贴",new ImageIcon("images/paste.gif"));//创建二级菜单项
KeyStroke kv= KeyStroke.getKeyStroke(
KeyEvent.VK_V,InputEvent.CTRL_MASK);
pasteItem.setAccelerator(kv);
undoItem=new JMenuItem(" 撤消",new ImageIcon("images/undo.gif"));
KeyStroke kz= KeyStroke.getKeyStroke(
KeyEvent.VK_Z,InputEvent.CTRL_MASK);
undoItem.setAccelerator(kz);
redoItem=new JMenuItem(" 重做",new ImageIcon("images/redo.gif"));
KeyStroke ky= KeyStroke.getKeyStroke(
KeyEvent.VK_Y,InputEvent.CTRL_MASK);
redoItem.setAccelerator(ky);
selectAll=new JMenuItem(" 全选",new ImageIcon("images/selectall.gif."));
KeyStroke kf= KeyStroke.getKeyStroke(
KeyEvent.VK_F,InputEvent.CTRL_MASK);
selectAll.setAccelerator(kf);
findItem=new JMenuItem(" 查找",new ImageIcon("images/search.gif."));
KeyStroke ka= KeyStroke.getKeyStroke(
KeyEvent.VK_A,InputEvent.CTRL_MASK);
findItem.setAccelerator(ka);
replaceItem=new JMenuItem("替换");
findNextItem=new JMenuItem("查找下一个");
menuEdit.add(undoItem);
menuEdit.add(redoItem);
menuEdit.add(mi_Edit_Copy);
menuEdit.add(mi_Edit_Cut);
menuEdit.addSeparator();
menuEdit.add(pasteItem);//把二级菜单加入菜单项
menuEdit.addSeparator();
menuEdit.add(selectAll);
menuEdit.addSeparator();
menuEdit.add(findItem);
menuEdit.add(replaceItem);
menuEdit.add(findNextItem);
m_MenuBar.add(menuEdit);
//创建格式菜单
geShi=new JMenu("格式(G)");
menuApp=new JMenu("外观");
geShi.setMnemonic('G');//设置菜单子项的快捷键
foreColor=new JMenuItem("字体颜色");
backColor=new JMenuItem("背景颜色");
metal=new JMenuItem("Metal风格");
motif=new JMenuItem("Motif风格");
windows=new JMenuItem("Windows风格");
menuApp.add(metal);
menuApp.add(motif);
menuApp.add(windows);
geShi.add(foreColor);
geShi.add(backColor);
geShi.add(menuApp);
m_MenuBar.add(geShi);//将菜单项加入菜单栏
//创建插入菜单
menuInsert=new JMenu("插入(I)");
menuInsert.setMnemonic('I');
dateTime=new JMenuItem("插入日期");
menuInsert.add(dateTime);
m_MenuBar.add(menuInsert);
//创建查看菜单
menuLook=new JMenu("查看(V)");
menuLook.setMnemonic('V');
numItem=new JMenuItem("统计字数");
menuLook.add(numItem);
m_MenuBar.add(menuLook);
//创建弹出窗口
final JPopupMenu popM=new JPopupMenu();//创建弹出窗口
pi_New=new JMenuItem(" 新建",new ImageIcon("images/new.gif"));//为弹出窗口创建菜单子项
pi_Copy=new JMenuItem(" 复制",new ImageIcon("images/copy.gif"));
pi_Cut=new JMenuItem(" 剪切",new ImageIcon("images/cut.gif"));
pi_Paste=new JMenuItem(" 粘帖",new ImageIcon("images/paste.gif"));
pi_selectAll=new JMenuItem(" 全选",new ImageIcon("images/selectall.gif."));
popM.add(pi_New);//为弹出菜单加入菜单子项
popM.add(pi_Copy);
popM.add(pi_Cut);
popM.add(pi_Paste);
popM.add(pi_selectAll);
pi_Del=new JMenuItem(" 删除",new ImageIcon("images/cancel.gif."));
popM.add(pi_Del);
pi_Pro=new JMenuItem(" 属性",new ImageIcon("images/shuxing.gif."));
popM.add(pi_Pro);
//将菜单子项注册给监听器
//测试用的方法
MenuItemEventHandler menuItemHandler = new MenuItemEventHandler();
mi_File_New.addActionListener(menuItemHandler);//使菜单子项响应动作事件
mi_File_Open.addActionListener(menuItemHandler);//使菜单子项响应动作事件
mi_File_Save.addActionListener(menuItemHandler);//使菜单子项响应动作事件
mi_File_LSave.addActionListener(menuItemHandler);//使菜单子项响应动作事件
mi_File_Exit.addActionListener(menuItemHandler);//使菜单子项响应动作事件
mi_Edit_Cut.addActionListener(menuItemHandler);
mi_Edit_Copy.addActionListener(menuItemHandler);
pasteItem.addActionListener(menuItemHandler);
//mi_Paste_All.addActionListener(menuItemHandler);
foreColor.addActionListener(menuItemHandler);
backColor.addActionListener(menuItemHandler);
metal.addActionListener(menuItemHandler);
motif.addActionListener(menuItemHandler);
windows.addActionListener(menuItemHandler);
pi_Del.addActionListener(menuItemHandler);
pi_Pro.addActionListener(menuItemHandler);
pi_New.addActionListener(menuItemHandler);//使菜单子项响应动作事件
pi_Copy.addActionListener(menuItemHandler);
pi_Cut.addActionListener(menuItemHandler);
pi_Paste.addActionListener(menuItemHandler);
pi_selectAll.addActionListener(menuItemHandler);
selectAll.addActionListener(menuItemHandler);
dateTime.addActionListener(menuItemHandler);
numItem.addActionListener(menuItemHandler);
undoItem.addActionListener(menuItemHandler);
redoItem.addActionListener(menuItemHandler);
findItem.addActionListener(menuItemHandler);
findNextItem.addActionListener(menuItemHandler);
replaceItem.addActionListener(menuItemHandler);
//goToLineItem.addActionListener(menuItemHandler);
/// selectAllItem.addActionListener(menuItemHandler);
//timeItem.addActionListener(menuItemHandler);
//autoNextLineItem.addActionListener(menuItemHandler);
//fontItem.addActionListener(menuItemHandler);
// helpItem.addActionListener(menuItemHandler);
// aboutItem.addActionListener(menuItemHandler);
//创建文本区域和状态条
Container c=getContentPane();
c.setLayout(new BorderLayout());
statusBar=new JLabel("状态提示:");//状态栏对象
text = new JTextArea();//创建文本区域
text.setLineWrap(true);//自动换行
c.add(new JScrollPane(text),BorderLayout.CENTER);
c.add(statusBar,BorderLayout.SOUTH);
//字体字号组合框
comFont=new JComboBox(items);
comFont.setSelectedItem("宋体");
font="宋体";
comSize=new JComboBox(a);
comSize.setSelectedItem("16");
m=16;
comFont.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
font=(String)comFont.getSelectedItem();
text.setFont(new Font(font,Font.PLAIN,m));
}
});
//字号组合框
comSize.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
m=comSize.getSelectedIndex();
text.setFont(new Font(font,Font.PLAIN,m));
}
});
//粗体斜体设置
bold=new JCheckBox("粗体");
italic=new JCheckBox("斜体");
CheckBoxListener listener=new CheckBoxListener();
bold.addItemListener(listener);
italic.addItemListener(listener);
//监听鼠标事件,弹出快捷菜单
text.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent e){
if(e.isPopupTrigger()){
popM.show(text,e.getX(),e.getY());
}
}
});
text.getDocument().addUndoableEditListener(ue);
//创建工具栏按钮并注册给监听者
ImageIcon newIcon=new ImageIcon("images/new.gif");
newBtn=new JButton(newIcon);
openBtn=new JButton(new ImageIcon("images/open.gif"));
saveBtn=new JButton(new ImageIcon("images/save.gif"));
undoBtn=new JButton(new ImageIcon("images/undo.gif"));
redoBtn=new JButton( new ImageIcon("images/redo.gif"));
// numBtn=new JButton("统计字数");
// lineBtn=new JButton( new ImageIcon("images/underline.gif"));
//创建"常用工具"工具栏
JToolBar toolBar=new JToolBar("常用工具",SwingConstants.HORIZONTAL);
newBtn.setToolTipText("新建文件");
openBtn.setToolTipText("打开文件");
saveBtn.setToolTipText("保存文件");
undoBtn.setToolTipText("撤消");
redoBtn.setToolTipText("重做");
// lineBtn.setToolTipText("添加下划线");
toolBar.add(newBtn);
toolBar.add(saveBtn);
toolBar.add(openBtn);
toolBar.addSeparator();
//创建"编辑工具"工具栏
JToolBar toolBar1=new JToolBar("编辑工具",SwingConstants.HORIZONTAL);
cutBtn=new JButton(new ImageIcon("images/cut.gif"));
cutBtn.setToolTipText("剪切");
toolBar1.add(cutBtn);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -