📄 11232044292.java
字号:
/**
*by pawpaw
*06/09/29
*文本编辑器
**/
package Text_editorPackage;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
import javax.swing.filechooser.*;
import javax.swing.Popup;
import java.io.*;
import java.util.*;
class text_editor extends JFrame implements ActionListener{
private File file = null;
private JTextArea textArea = new JTextArea(); //文本区
private JScrollPane jsp=new JScrollPane(textArea);//可以拖动
private JPopupMenu popupMenu = new JPopupMenu();//弹出菜单模板
private JToolBar toolbar = new JToolBar(); //工具栏
private JLabel statubar = new JLabel("我的记事本");//状态栏
private JTextField findtxt,repltxt; //find为查找对话框的输入文本区,replace对话框的输入文本区
static private final String newline = "\n";//回车
Dialog findDialog,replaceDialog; //find为查找对话框,replace对话框
JButton findenter,replb; //find为查找对话框,replace对话框的确定按钮
JButton cancel1,cancel2;//find,replace对话框中的取消按钮
JButton FindNextItem,SwapNextItem;
String path;//文件路径
String str,strnext;
int startp,endp,nexttemp,newstartp,newendp; //查找替换时所用的临时变量
/////// 菜单栏
private JMenuBar mBar = new JMenuBar();
private JMenu fileMenu = new JMenu("文件(F)");
private JMenu editorMenu = new JMenu("编辑(E)");
private JMenu formatMenu = new JMenu("格式(O)");
private JMenu lookoverMenu = new JMenu("查看(V)");
private JMenu helpMenu = new JMenu("帮助(H)");
private JMenu interface_styleMenu = new JMenu("界面风格(I)");
///////编辑子菜单
private JMenuItem editCopy = new JMenuItem("复制(C)",'C');
private JMenuItem editCut = new JMenuItem("剪切(T)",'T');
private JMenuItem editPaste = new JMenuItem("粘贴(P)",'P');
private JMenuItem editDelete = new JMenuItem("删除(L)",'L');
private JMenuItem editUndo = new JMenuItem("撤消(U)",'U');
private JMenuItem editFind = new JMenuItem("查找(F)",'F');
private JMenuItem editFindNext = new JMenuItem("查找下一个(N)",'N');
private JMenuItem editSwap = new JMenuItem("替换(R)",'R');
private JMenuItem editSwapNext = new JMenuItem("替换下一个(S)",'S');
private JMenuItem editSelectAll = new JMenuItem("全选(A)",'A');
private JMenuItem datetime = new JMenuItem("时间/日期(D)",'D');
///////右键点击子菜单
private JMenuItem peditCut = new JMenuItem("剪切");
private JMenuItem peditCopy = new JMenuItem("复制");
private JMenuItem peditPaste = new JMenuItem("粘贴");
private JMenuItem peditDelete = new JMenuItem("删除");
private JMenuItem peditUndo = new JMenuItem("撤消");
private JMenuItem peditFind = new JMenuItem("查找");
private JMenuItem peditFindNext = new JMenuItem("查找下一个");
private JMenuItem peditSwap = new JMenuItem("替换");
private JMenuItem peditSwapNext = new JMenuItem("替换下一个");
private JMenuItem peditSelectAll = new JMenuItem("全选");
///////文件子菜单
private JMenuItem newfile = new JMenuItem("新建(N)",'N');
private JMenuItem openItem = new JMenuItem("打开(O)",'O');
private JMenuItem saveItem = new JMenuItem("保存(S)",'S');
private JMenuItem saveAsItem = new JMenuItem("另存为(A)",'A');
private JMenuItem pageset = new JMenuItem("页面设置(U)",'U');
private JMenuItem mimeograph = new JMenuItem("打印(P)",'P');
private JMenuItem exit = new JMenuItem("退出(E)",'E');
/////// 帮助子菜单
private JMenuItem about_us = new JMenuItem("关于记事本(A)",'A');
private JMenuItem help_name = new JMenuItem("帮助主题(H)",'H');
/////// 界面风格子菜单
private JMenuItem Motif = new JMenuItem("MOTIF风格");
private JMenuItem Local = new JMenuItem("默认风格");
private JMenuItem Metal = new JMenuItem("METAL风格");
///////选择菜单
private JCheckBoxMenuItem linewrap=new JCheckBoxMenuItem("自动换行(W)");
private JCheckBoxMenuItem status_bar = new JCheckBoxMenuItem("状态栏(S)");
private JCheckBoxMenuItem tool = new JCheckBoxMenuItem("工具栏(T)");
///////添加工具栏菜单
private JButton new_tool = new JButton(new ImageIcon("pic/new.jpg"));
private JButton open_tool = new JButton(new ImageIcon("pic/open.gif"));
private JButton save_tool = new JButton(new ImageIcon("pic/save.gif"));
private JButton save_as_tool = new JButton(new ImageIcon("pic/saveas.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 delete_tool = new JButton(new ImageIcon("pic/del.gif"));
private JButton font_tool = new JButton(new ImageIcon("pic/font.gif"));
private JButton color_tool = new JButton(new ImageIcon("pic/color.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 repalce_tool = new JButton(new ImageIcon("pic/repalce.gif"));
private JButton repalcenext_tool = new JButton(new ImageIcon("pic/repalcenext.gif"));
///////字体
private JMenuItem fontcolor = new JMenuItem("字体颜色");
private JMenuItem pedit_fontcolor = new JMenuItem("字体颜色");
private JMenuItem edit_font = new JMenuItem("字体(F)",'F');
private JMenuItem pedit_font = new JMenuItem("字体");
private Font textfont=new Font("宋体",0,20);
///////其它
private boolean checksave = false;//判断是否保存
///////鼠标监听
private class Mouselistener extends MouseAdapter{
public void mousePressed(MouseEvent evt){
if(evt.getModifiers()==MouseEvent.BUTTON3_MASK){
popupMenu.show(evt.getComponent(),evt.getX(),evt.getY());
//popupMenu.setBackground(Color.orange);
}
}
public void mouseReleased(MouseEvent m){
Get_XY();
}
}
//////键盘监听
private class Keylistener extends KeyAdapter{
public void keyReleased(KeyEvent k){
Get_XY();
}
}
private class WindowCloser extends WindowAdapter{//退出事件
public void windowClosing(WindowEvent we)
{ System.exit(0); }
}
///////主构造函数
public text_editor(){
super("新建文本文档----记事本");
textArea.addMouseListener(new Mouselistener());
setupMenu();
setupFrame();
/*textArea.addMouseListener(new MouseAdapter(){
public void mouseReleased(MouseEvent evt){
if(evt.isPopupTrigger())
popupMenu.show(evt.getComponent(),evt.getX(),evt.getY());
}
});*/
}
///////构造菜单///工具条///弹出菜单///等...
void setupMenu(){
setLayout(new BorderLayout());////设置布局
//设置快捷键
fileMenu.setMnemonic('F');
editorMenu.setMnemonic('E');
formatMenu.setMnemonic('O');
lookoverMenu.setMnemonic('V');
helpMenu.setMnemonic('H');
interface_styleMenu.setMnemonic('I');
linewrap.setMnemonic('W');
status_bar.setMnemonic('S');
tool.setMnemonic('T');
newfile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK));
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK));
saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
mimeograph.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
editCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));
editCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));
editPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));
editUndo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK));
editFind.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK));
editFindNext.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));
editSwap.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.CTRL_MASK));
editDelete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
editSelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));
datetime.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0));
peditUndo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK));
peditCut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK));
peditCopy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK));
peditPaste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK));
peditDelete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0));
peditSelectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK));
//设置是否可见
newfile.setEnabled(true);
editUndo.setEnabled(false);
help_name.setEnabled(false);
status_bar.setEnabled(true);
pageset.setEnabled(false);
mimeograph.setEnabled(false);
statubar.setVisible(false);
toolbar.setVisible(false);
editFindNext.setEnabled(false);
//添加菜单
mBar.add(makeMenu(fileMenu,new Object [] {
newfile , openItem,null,saveItem,saveAsItem,null,pageset,mimeograph,null,exit
},this));
mBar.add(makeMenu(editorMenu,new Object [] {
editUndo,null,editCut,editCopy,editPaste,editDelete,null,editFind,editFindNext,editSwap,editSwapNext,"转到",null,editSelectAll,datetime},
this));
mBar.add(makeMenu(formatMenu,new Object [] {
linewrap,null,edit_font,fontcolor},this));
mBar.add(makeMenu(lookoverMenu,new Object [] {
status_bar,null,tool},this));
mBar.add(makeMenu(helpMenu,new Object [] {
help_name,null,about_us},this));
mBar.add(makeMenu(interface_styleMenu,new Object [] {
Local,Motif,Metal},this));
//添加右键弹出菜单
/*popupMenu.add(makePopupMenu(new Object []{
peditUndo,null,peditCopy,peditPaste,peditDelete,peditCut,null,"字体",null,"全选",null,"从右到左阅读"
},this));*/
popupMenu.add(peditUndo); peditUndo.setEnabled(false);
popupMenu.add(peditCut); peditCut.setEnabled(true);
popupMenu.add(peditCopy); peditCopy.setEnabled(true);
popupMenu.add(peditPaste); peditPaste.setEnabled(true);
popupMenu.add(peditDelete); peditDelete.setEnabled(true);
popupMenu.addSeparator();
popupMenu.add(pedit_font);
popupMenu.add(pedit_fontcolor);
popupMenu.addSeparator();
popupMenu.add(peditFind);
popupMenu.add(peditFindNext);
popupMenu.add(peditSwap);
popupMenu.add(peditSwapNext);
popupMenu.addSeparator();
popupMenu.add(peditSelectAll);
popupMenu.addSeparator();
popupMenu.add("从右到左阅读");
////////弹出菜单监听事件
datetime.addActionListener(this);
peditUndo.addActionListener(this);
peditDelete.addActionListener(this);
peditCopy.addActionListener(this);
peditCut.addActionListener(this);
peditPaste.addActionListener(this);
peditFind.addActionListener(this);
peditFindNext.addActionListener(this);
peditSwap.addActionListener(this);
peditSwapNext.addActionListener(this);
peditSelectAll.addActionListener(this);
pedit_font.addActionListener(this);
pedit_fontcolor.addActionListener(this);
//添加工具栏
toolbar.setFloatable(true);//设置为可移动
toolbar.setSize(40,JFrame.MAXIMIZED_VERT);
toolbar.addSeparator();
toolbar.add(new_tool); new_tool.setToolTipText("新建");
new_tool.addActionListener(this);
toolbar.add(open_tool); open_tool.setToolTipText("打开");
open_tool.addActionListener(this);
toolbar.add(save_tool); save_tool.setToolTipText("保存");
save_tool.addActionListener(this);
toolbar.add(save_as_tool); save_as_tool.setToolTipText("另存");
save_as_tool.addActionListener(this);
toolbar.addSeparator();
toolbar.add(copy_tool); copy_tool.setToolTipText("复制");
copy_tool.addActionListener(this);
toolbar.add(cut_tool); cut_tool.setToolTipText("剪切");
cut_tool.addActionListener(this);
toolbar.add(paste_tool); paste_tool.setToolTipText("粘贴");
paste_tool.addActionListener(this);
toolbar.add(delete_tool); delete_tool.setToolTipText("删除");
delete_tool.addActionListener(this);
toolbar.addSeparator();
toolbar.add(find_tool);find_tool.setToolTipText("查找");
find_tool.addActionListener(this);
toolbar.add(findnext_tool);findnext_tool.setToolTipText("查找下一个");
findnext_tool.addActionListener(this);
toolbar.add(repalce_tool);repalce_tool.setToolTipText("替换");
repalce_tool.addActionListener(this);
toolbar.add(repalcenext_tool);repalcenext_tool.setToolTipText("替换下一个");
repalcenext_tool.addActionListener(this);
toolbar.addSeparator();
toolbar.add(font_tool);font_tool.setToolTipText("字体");
font_tool.addActionListener(this);
toolbar.add(color_tool);color_tool.setToolTipText("颜色");
color_tool.addActionListener(this);
//添加查找,替换中的按钮
findenter = new JButton("确定");
findenter.addActionListener(this); //声明对话框中上确定按钮,并注册事件
replb = new JButton("确定");
replb.addActionListener(this);
cancel1 = new JButton("取消");
cancel1.addActionListener(this);
cancel2 = new JButton("取消");
cancel2.addActionListener(this);
FindNextItem = new JButton("查找下一个");
FindNextItem.addActionListener(this);
SwapNextItem = new JButton("替换下一个");
SwapNextItem.addActionListener(this);
}
void setupFrame(){
//设置窗体风格
/*com.sun.java.swing.plaf.windows.WindowsLookAndFeel------指定Windows
外观,目前只能用于微软的windows系统。
* com.sun.java.swing.plaf.motif.MotifLookAndFeel------指定CDE/MOtif外
观,该外观可用于任何平台
* javax.swing.plaf.metal.MetalLookAndFeel------指定Java外观(其代码名为
Metal)*/
String windows="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
String motif="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
String metal="javax.swing.plaf.metal.MetalLookAndFeel";
/*因调用 setLookAndFeel 方法时,可能会由于所指定的外观无效或不能装载而导
致失败.故用 try-catch 捕获异常*/
try
{
UIManager.setLookAndFeel(windows);
SwingUtilities.updateComponentTreeUI(this);
}
catch(Exception e)
{
System.out.println("不能设置这个风格"+e);
}
//设置文本域属性
textArea.setFont(new Font("宋体",0,17));
textArea.setSelectedTextColor(Color.blue);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -