📄 mainframe.java
字号:
package WordTest;
import java.awt.*;
import java.awt.Font;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.util.*;
//一些弹出组件的包
//import pic.*;
import WordTest.*;
//定义一个主窗体类,有主窗口的窗体组件,布局,监听接口,组件事件监听注册,鼠标和键盘事件监听,
//定义保护域,以供子类,子类有事件处理逻辑函数,字体,查找等JDialog
//窗口单独写在一个包类,分开写;类的关系更明确;
public class MainFrame extends JFrame implements ActionListener{
// <editor-fold defaultstate="collapsed" desc=" 定义的窗体域 ">
///其他需要用的中间量
private int fontstatus=0;//设置格式栏中需要用的量,保存选择结果
private boolean checksave = false;//判断是否保存
static final String newline="\n";//回车
private File file = null;//打开文件等文件操作要用到的量,同时将没有保存的
//,没有建立的文件进行暂时的保存
private LogicEvent logicev;//声明添加菜单的函数
private FontTest ff;//字体类
private Font fonttext;//设置字体需要用的量
private FindText ft;//查找类
private Replace rp;//替换类
//得到系统字体数组
private String []Font_list = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
//设置字体大小数组
private String []FontSize_list={"8","9","10","12","14","16","20","22","24","26","28","36","40","50","72"};
//定义的组件的顺序为从北到南
//private JPopupMenu MouseMenu=new JPopupMenu();//鼠标右键菜单项
private JMenuBar MenuBar=new JMenuBar();//主窗体的菜单栏;
private JToolBar ToolBar=new JToolBar();//主窗体的工具栏
private JToolBar FormatBar=new JToolBar();//主窗体的格式栏
//标签游标没找到相关的组件,自己也不会做,所以略去;
public static JTextArea TextArea=new JTextArea();//主窗体的文本区
private JScrollPane jsp=new JScrollPane(TextArea);//可以拖动
private JLabel StatusBar=new JLabel();//主窗体的状态栏
/** Creates a new instance of MainFrame */
String path;//文件路径,考虑到用的比较多,就定义成域;
///菜单栏
private JMenu File_Menu=new JMenu("文件(F)");
private JMenu Edit_Menu=new JMenu("编辑(E)");
private JMenu View_Menu=new JMenu("查看(L)");
private JMenu Insert_Menu=new JMenu("插入(I)");
private JMenu Format_Menu=new JMenu("格式(O)");
private JMenu Help_Menu=new JMenu("帮助(H)");
private JMenu Face_Style_Menu=new JMenu("界面风格(R)");
///文件菜单栏
private JMenuItem File_New=new JMenuItem("新建",'N');
private JMenuItem File_Open=new JMenuItem("打开",'O');
private JMenuItem File_Save=new JMenuItem("保存",'S');
private JMenuItem File_SaveAs=new JMenuItem("另存为",'A');
// private JSeparator File_Sep=new JSeparator();
private JMenuItem File_PageSet=new JMenuItem("页面设置",'O');
private JMenuItem File_Print = new JMenuItem("打印(P)",'P');
private JMenuItem File_Exit = new JMenuItem("退出(E)",'E');
///编辑菜单栏
private JMenuItem Edit_Back=new JMenuItem("撤消(U)",'U');
private JMenuItem Edit_Copy=new JMenuItem("复制(C)",'C');
private JMenuItem Edit_Cut=new JMenuItem("剪切(T)",'T');
private JMenuItem Edit_Paste=new JMenuItem("粘贴(V)",'V');
private JMenuItem Edit_Del=new JMenuItem("删除(L)",'L');
private JMenuItem Edit_SelectAll=new JMenuItem("全选(C)",'A');
private JMenuItem Edit_Find=new JMenuItem("查找(C)",'F');
private JMenuItem Edit_Replace=new JMenuItem("替换(C)",'H');
///查看菜单栏
// private JMenuItem Edit_ReplaceNext=new JMenuItem("替换下一个(C)",'C');
// private JCheckBoxMenuItem linewrap=new JCheckBoxMenuItem("自动换行(W)");
private JCheckBoxMenuItem Tool_Bar = new JCheckBoxMenuItem("工具栏(T)");
private JCheckBoxMenuItem Format_Bar=new JCheckBoxMenuItem("格式栏(O)");
private JCheckBoxMenuItem Status_Bar = new JCheckBoxMenuItem("状态栏(S)");
///格式菜单栏
private JCheckBoxMenuItem Format_NewLine=new JCheckBoxMenuItem("自动换行(W)");
// private JMenuItem Format_Font = new JMenuItem("字体(F)");
// private JMenuItem Format_ForColor = new JMenuItem("字体颜色");
private JMenuItem Format_Font=new JMenuItem("字体");
private JMenuItem Format_Color=new JMenuItem("字体颜色");
///插入菜单栏
private JMenuItem datetime = new JMenuItem("时间/日期(D)",'D');
private JMenuItem duixiang = new JMenuItem("对象");
///帮助菜单栏
private JMenuItem Help_AboutUs = new JMenuItem("关于记事本(A)",'A');
private JMenuItem Help_Name = new JMenuItem("帮助主题(H)",'H');
///工具栏条目细分每个图片,工具条编名规则是:属性+工具条姓名
private JButton new_tool = new JButton(new ImageIcon("pic\\new.gif"));
private JButton open_tool = new JButton(new ImageIcon("pic/open.gif"));
private JButton save_tool = new JButton(new ImageIcon("pic/save.gif"));
private JButton print_tool = new JButton(new ImageIcon("pic/print.gif"));
private JButton cut_tool = new JButton(new ImageIcon("pic/cut.gif"));
private JButton copy_tool = new JButton(new ImageIcon("pic/copy.gif"));
private JButton paste_tool = new JButton(new ImageIcon("pic/paste.gif"));
private JButton back_tool = new JButton(new ImageIcon("pic/back.gif"));
private JButton delete_tool = new JButton(new ImageIcon("pic/del.gif"));
private JButton find_tool = new JButton(new ImageIcon("pic/find.gif"));
//private JButton findnext_tool = new JButton(new ImageIcon("pic/findnext.gif"));
private JButton datetime_tool = new JButton(new ImageIcon("pic/datetime.gif"));
//private JButton repalcenext_tool = new JButton(new ImageIcon("pic/repalcenext.gif"));
///格式栏条目细分每个图片
private JComboBox fontfamily_format=new JComboBox(Font_list);;
private JComboBox fontsize_format=new JComboBox(FontSize_list);;
private JButton fontbold_format = new JButton(new ImageIcon("pic/bold.gif"));
private JButton fontitcal_format = new JButton(new ImageIcon("pic/itcal.gif"));
private JButton fontu_format= new JButton(new ImageIcon("pic/u.gif"));
private JButton forcolor_format = new JButton(new ImageIcon("pic/color.gif"));
///鼠标右键菜单栏目
/* private JMenuItem Mouse_Back = new JMenuItem("撤消");
private JMenuItem Mouse_Cut = new JMenuItem("剪切");
private JMenuItem Mouse_Copy = new JMenuItem("复制");
private JMenuItem Mouse_Paste = new JMenuItem("粘贴");
private JMenuItem Mouse_Del = new JMenuItem("删除");
private JMenuItem Mouse_Font=new JMenuItem("字体");
private JMenuItem Mouse_Color=new JMenuItem("字体颜色");
private JMenuItem Mouse_Find = new JMenuItem("查找");
private JMenuItem Mouse_Replace = new JMenuItem("替换");
private JMenuItem Mouse_SelectAll = new JMenuItem("全选");
*/
// </editor-fold>
// </editor-fold>
// <editor-fold defaultstate="collapsed" desc=" 窗体布局和监听注册,快捷键的建立,鼠标右键,工具栏,格式栏,状态栏 ">
//设置菜单栏
void SetMenu()
{
setLayout(new BorderLayout());
//菜单栏目的快捷键
File_Menu.setMnemonic('F');
Edit_Menu.setMnemonic('E');
View_Menu.setMnemonic('L');
Insert_Menu.setMnemonic('I');
Format_Menu.setMnemonic('O');
Help_Menu.setMnemonic('H');
Face_Style_Menu.setMnemonic('R');
//状态的快捷键
Tool_Bar.setMnemonic('T');
Status_Bar.setMnemonic('S');
Format_Bar.setMnemonic('O');
///文件菜单类系统快捷键方式
File_New.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
File_Open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
File_Save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
File_Print.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
//编辑类系统快捷键方式
Edit_Back.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));
Edit_Copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
Edit_Cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
Edit_Find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
Edit_Paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
Edit_Replace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));
Edit_Del.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
Edit_SelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
///设置不可用的按钮项,这些功能不好实现,就不写了
///添加菜单,大的添加是菜单栏目的添加,小的添加是每个菜单栏目子菜单的添加
//文件项
MenuBar.add(logicev.makeMenu(File_Menu,new Object[]{File_New,File_Open,null,File_Save,File_SaveAs,
null,File_PageSet,File_Print,null,File_Exit},this));
//编辑项
MenuBar.add(logicev.makeMenu(Edit_Menu,new Object[]{Edit_Back,null,Edit_Copy,Edit_Cut,Edit_Paste,null,Edit_Del,
Edit_SelectAll,null,Edit_Find,Edit_Replace},this));
//查看项
MenuBar.add(logicev.makeMenu(View_Menu,new Object[]{Tool_Bar,Format_Bar,Status_Bar},this));
//插入项
MenuBar.add(logicev.makeMenu(Insert_Menu,new Object[]{datetime,null,duixiang},this));
//格式项
MenuBar.add(logicev.makeMenu(Format_Menu,new Object[]{Format_NewLine,null,Format_Font,Format_Color},this));
//帮助项
MenuBar.add(logicev.makeMenu(Help_Menu,new Object[]{Help_AboutUs,null,Help_Name},this));
}
//设置鼠标右键
/*void SetMouse()
{
MouseMenu.add(Mouse_Back);
MouseMenu.add(Mouse_Copy);
MouseMenu.add(Mouse_Cut);
MouseMenu.add(Mouse_Paste);
MouseMenu.add(Mouse_Del);
MouseMenu.addSeparator();
//MouseMenu.add(Font_Format);
//MouseMenu.add(C);
MouseMenu.add(Mouse_Font);
MouseMenu.add(Mouse_Color);
MouseMenu.addSeparator();
MouseMenu.add(Mouse_Find);
MouseMenu.add(Mouse_Replace);
MouseMenu.addSeparator();
MouseMenu.add(Mouse_SelectAll);
///鼠标右键类系统快捷键方式
Mouse_Back.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));
Mouse_Copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
Mouse_Cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
Mouse_Find.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
Mouse_Paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
Mouse_Replace.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));
Mouse_Del.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
Mouse_SelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
}
**/
//设置工具栏和格式栏
void SetBar()
{
ToolBar.setFloatable(true);
ToolBar.setSize(20,JFrame.MAXIMIZED_VERT);
ToolBar.addSeparator();
ToolBar.add(new_tool); new_tool.setToolTipText("新建");
ToolBar.add(open_tool); open_tool.setToolTipText("打开");
ToolBar.add(save_tool); save_tool.setToolTipText("保存");
ToolBar.add(print_tool); print_tool.setToolTipText("打印");
ToolBar.add(cut_tool); cut_tool.setToolTipText("剪切");
ToolBar.add(copy_tool); copy_tool.setToolTipText("复制");
ToolBar.add(paste_tool); paste_tool.setToolTipText("粘贴");
ToolBar.add(back_tool); back_tool.setToolTipText("撤消");
ToolBar.add(delete_tool); delete_tool.setToolTipText("删除");
ToolBar.add(find_tool); find_tool.setToolTipText("查找");
// ToolBar.add(findnext_tool); findnext_tool.setToolTipText("查找下一个");
ToolBar.add(datetime_tool); datetime_tool.setToolTipText("日期时间");
// ToolBar.add(repalcenext_tool); repalcenext_tool.setToolTipText("替换下一个");
///格式栏上的小图标快捷添加
FormatBar.add(fontbold_format); fontbold_format.setToolTipText("粗体");
FormatBar.add(fontitcal_format); fontitcal_format.setToolTipText("斜体");
FormatBar.add(fontu_format); fontu_format.setToolTipText("下划线");
FormatBar.add(forcolor_format); forcolor_format.setToolTipText("字体颜色");
FormatBar.add(fontfamily_format);
FormatBar.add(fontsize_format);
}
//添加按钮的监听事件
void SetEventListen()
{
/* File_New.addActionListener(this);
File_Open.addActionListener(this);
File_Save.addActionListener(this);
File_SaveAs.addActionListener(this);
File_Print.addActionListener(this);
File_Exit.addActionListener(this);
//编辑类
Edit_Back.addActionListener(this);
Edit_Copy.addActionListener(this);
Edit_Cut.addActionListener(this);
Edit_Paste.addActionListener(this);
Edit_Del.addActionListener(this);
Edit_SelectAll.addActionListener(this);
Edit_Find.addActionListener(this);
Edit_Replace.addActionListener(this);
//查看菜单
Tool_Bar.addActionListener(this);
Format_Bar.addActionListener(this);
Status_Bar.addActionListener(this);
//格式菜单
Format_NewLine.addActionListener(this);
Format_Font.addActionListener(this);
Format_Color.addActionListener(this);
//插入菜单
datetime.addActionListener(this);
duixiang.addActionListener(this);
//帮助菜单
Help_AboutUs.addActionListener(this);
Help_Name.addActionListener(this);
**/
//工具栏
new_tool.addActionListener(this);
open_tool.addActionListener(this);
save_tool.addActionListener(this);
print_tool.addActionListener(this);
cut_tool.addActionListener(this);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -