JAVA文本编辑器.docx
《JAVA文本编辑器.docx》由会员分享,可在线阅读,更多相关《JAVA文本编辑器.docx(26页珍藏版)》请在冰豆网上搜索。
JAVA文本编辑器
文本编辑器,实现功能:
1.颜色,字体的改变关联
2.复制,粘贴,剪切功能
3.全选功能
4.时间戳功能
5.自动换行功能
6.帮助功能
7.文件读取,打开,保存,另存为功能等功能,首先我们看主要程序!
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;
importjavax.swing.*;
importjavax.swing.event.CaretEvent;
importjavax.swing.event.CaretListener;
importjavax.swing.undo.StateEdit;
importjava.util.*;
importfilter.FileExtensionFilter;
publicclassEditorJFrameextendsJFrameimplementsActionListener,MouseListener,KeyListener,CaretListener
{
privateJComboBoxcombox_name,combox_size;
privateJCheckBoxcheckb_bold,checkb_italic;
privateJRadioButtonradiob_color[];
privateJTextAreatext;
privateJButtonfindenter;
privateJTextFieldfindtxt;
privateJPopupMenupopupmenu;
privateJLabelstateBar;
privateColorcolor;
privateJCheckBoxMenuItemjcbmi[];
privateJRadioButtonMenuItemrbmi_color[];
privateJMenuItemfile[];
privateJMenuItemeditor[];
privateJMenuItemstyle[];
privateJMenuItemother[];
privateFilefilename;
privateJFileChooserfchooser;
privatebooleaniexc=true,jd=true,xy=true,xx=true;
privateStringstrline;
privateStringsubstrline="";
privateJDialogjdialog;
privateintendf=0,startf=0;
privateJFramejframe;
privateJTextFieldtxt;
publicEditorJFrame()
{
super("文本编辑器");
Dimensiondim=getToolkit().getScreenSize();
this.setBounds(dim.width/4,dim.height/4,
dim.width/2,dim.height/2);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
text=newJTextArea("Welcome欢迎");
text.addMouseListener(this);
text.addCaretListener(this);
text.addKeyListener(this);
text.setForeground(newColor(255,0,0));
this.getContentPane().add(newJScrollPane(text));
findenter=newJButton("查找下一个");
findenter.addActionListener(this);
findtxt=newJTextField(7);
findenter.addActionListener(this);
findenter.setEnabled(false);
findtxt.addCaretListener(this);
txt=newJTextField("ABC");
txt.setEditable(false);
JToolBartoolbar=newJToolBar();
this.getContentPane().add(toolbar,"North");
GraphicsEnvironmentge=GraphicsEnvironment.getLocalGraphicsEnvironment();
String[]fontsName=ge.getAvailableFontFamilyNames();
combox_name=newJComboBox(fontsName);
combox_name.addActionListener(this);
toolbar.add(combox_name);
Stringsizestr[]={"20","30","40","50","60","70"};
combox_size=newJComboBox(sizestr);
combox_size.setEditable(true);
combox_size.addActionListener(this);
toolbar.add(combox_size);
this.filename=null;
this.fchooser=newJFileChooser(newFile(".",""));
this.fchooser.setFileFilter(newFileExtensionFilter("文本文件(*.txt)","txt"));
strline=text.getText();
checkb_bold=newJCheckBox("粗体");
toolbar.add(checkb_bold);
checkb_bold.addActionListener(this);
checkb_italic=newJCheckBox("斜体");
toolbar.add(checkb_italic);
checkb_italic.addActionListener(this);
Stringcolorstr[]={"红","绿","蓝","其他"};
ButtonGroupbgroup_color=newButtonGroup();
radiob_color=newJRadioButton[colorstr.length];
for(inti=0;i{
radiob_color[i]=newJRadioButton(colorstr[i]);
radiob_color[i].addActionListener(this);
bgroup_color.add(radiob_color[i]);
toolbar.add(radiob_color[i]);
}
radiob_color[0].setSelected(true);
this.addmyMenu();
this.setVisible(true);
this.addWindowListener(newWindowAdapter(){//此处为弹出对话保存
publicvoidwindowClosing(WindowEvente){
closeFile();
}
});
}
privatevoidaddmyMenu()
{
JMenuBarmenubar=newJMenuBar();
this.setJMenuBar(menubar);
Stringmenustr[]={"文件","编辑","格式","帮助"};
JMenumenu[]=newJMenu[menustr.length];
for(inti=0;i{
menu[i]=newJMenu(menustr[i]);
menubar.add(menu[i]);
}
Stringfilestr[]={"新建(N)","打开(O)","保存(S)","另存为(A)...","退出(X)"};
file=newJMenuItem[filestr.length];
for(inti=0;i{
if(i==4)
menu[0].addSeparator();
file[i]=newJMenuItem(filestr[i]);
file[i].addActionListener(this);
menu[0].add(file[i]);
}
file[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
file[1].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
file[2].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
file[3].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
file[4].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
Stringeditorstr[]={"撤销(U)","剪切(T)","复制(C)","粘贴(P)","删除(L)","查找(F)","查找下一个(N)","全选(A)","时间/日期"};
editor=newJMenuItem[editorstr.length];
for(inti=0;i{
if(i==1||i==6||i==9)
menu[1].addSeparator();
editor[i]=newJMenuItem(editorstr[i]);
editor[i].setEnabled(false);
editor[i].addActionListener(this);
menu[1].add(editor[i]);
}
editor[3].setEnabled(true);
editor[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));
editor[1].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
editor[2].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
editor[3].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
editor[4].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_MASK));
editor[5].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
editor[6].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,InputEvent.CTRL_MASK));
editor[7].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
editor[8].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5,InputEvent.CTRL_MASK));
JMenumenu_style=newJMenu("字形");
Stringstr[]={"粗体","斜体"};
jcbmi=newJCheckBoxMenuItem[str.length];
jcbmi[0]=newJCheckBoxMenuItem("粗体");
menu_style.add(jcbmi[0]);
jcbmi[0].addActionListener(this);
jcbmi[1]=newJCheckBoxMenuItem("斜体");
menu_style.add(jcbmi[1]);
jcbmi[1].addActionListener(this);
menu[1].add(menu_style);
JMenumenu_color=newJMenu("颜色");
menu[1].add(menu_color);
ButtonGroupbuttongroup=newButtonGroup();
Stringcolorstr[]={"红","绿","蓝","其他"};
rbmi_color=newJRadioButtonMenuItem[colorstr.length];
for(inti=0;i{
rbmi_color[i]=newJRadioButtonMenuItem(colorstr[i]);
buttongroup.add(rbmi_color[i]);
rbmi_color[i].addActionListener(this);
menu_color.add(rbmi_color[i]);
}
Stringstylestr[]={"自动换行(W)"};
style=newJMenuItem[stylestr.length];
for(inti=0;i{
style[i]=newJMenuItem(stylestr[i]);
style[i].addActionListener(this);
menu[2].add(style[i]);
}
style[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,InputEvent.CTRL_MASK));
Stringotherstr[]={"帮助(H)","关于记事本(A)"};
other=newJMenuItem[otherstr.length];
for(inti=0;i{
other[i]=newJMenuItem(otherstr[i]);
other[i].addActionListener(this);
menu[3].add(other[i]);
}
menu[3].addSeparator();
other[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_MASK));
other[1].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
popupmenu=newJPopupMenu();
Stringmenuitemstr[]={"剪切","复制","粘贴"};
JMenuItempopmenuitem[]=newJMenuItem[menuitemstr.length];
for(inti=0;i{
popmenuitem[i]=newJMenuItem(menuitemstr[i]);
popupmenu.add(popmenuitem[i]);
popmenuitem[i].addActionListener(this);
}
JScrollPanepanel=newJScrollPane(text,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
ContainercontentPane=getContentPane();
contentPane.add(panel,BorderLayout.CENTER);
//状态栏
stateBar=newJLabel("未修改");
stateBar.setHorizontalAlignment(SwingConstants.LEFT);
stateBar.setBorder(
BorderFactory.createEtchedBorder());
contentPane.add(stateBar,BorderLayout.SOUTH);
popmenuitem[0].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
popmenuitem[1].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
popmenuitem[2].setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
text.add(popupmenu);
}
publicvoidSearch()
{
jdialog=newJDialog(this,"查找");
jdialog.add(newJLabel("输入要查找字符:
"));
jdialog.setLayout(newFlowLayout(FlowLayout.LEFT));
jdialog.add(findtxt);
jdialog.add(findenter);
jdialog.setDefaultCloseOperation(HIDE_ON_CLOSE);
jdialog.setBounds(this.getX()+100,this.getY()+150,300,100);
jdialog.show();
}
publicvoidfind()
{
startf=text.getText().indexOf(findtxt.getText(),0+endf);
endf=startf+findtxt.getText().length();
text.select(startf,endf);
if(startf<0)
{
jdialog.show(false);
JOptionPane.showMessageDialog(jdialog,"没有找到");
startf=0;
}
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getSource()instanceofJButton)
{
if(e.getSource()==findenter)
{
if(text.getText().equals("")){
JOptionPane.showMessageDialog(jdialog,"没有找到");
return;}
find();
}
}
if(e.getSource()instanceofJRadioButton)
{
if(e.getSource()==radiob_color[0])
{
rbmi_color[0].setSelected(true);
color=newColor(255,0,0);
}
if(e.getSource()==radiob_color[1])
{
rbmi_color[1].setSelected(true);
color=newColor(0,255,0);
}
if(e.getSource()==radiob_color[2])
{
rbmi_color[2].setSelected(true);
color=newColor(0,0,255);
}
if(e.getSource()==radiob_color[3])
{
ColoruseSelectColor=JColorChooser.showDialog(this,"选择颜色",Color.red);
color=useSelectColor;
}
text.setForeground(color);
return;
}
if(e.getSource()instanceofJCheckBoxMenuItem||e.getSource