这是小编在csdn第一篇博文,闲话不多说,直接上代码:
该编辑器能够类似记事本,能实现文件的打开,保存,文本的复制,粘贴,查找,替换等功能,效果图如下:
源码如下:
package A;
import java.awt.BorderLayout;
import java.awt.CheckboxMenuItem;
import java.awt.Container;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.KeyStroke;
public class ShiYan1 extends JFrame{
JMenuBar mb;
JMenu mfile, mcompile,mhelp;
JMenuItem mnew,mopen,mexit,msave,msaveas,mcopy,mstick,mfind,mreplase,mabout;
Container c;
JLabel lb;
JTextArea jta;
JScrollPane jsp;
FileDialog openFile;
FileDialog resaveFile;
JFileChooser jfc;
boolean issave=false;
String theFileName=null;
String thePath=null;
private String selectText="";
private FileDialog fd=new FileDialog(this);
private void init(){
c=this.getContentPane();
c.setLayout(new BorderLayout());
mb=new JMenuBar();
mfile=new JMenu("文件");
mcompile=new JMenu("编辑");
mhelp=new JMenu("帮助");
mb.add(mfile);mb.add(mcompile);mb.add(mhelp);
mnew=new JMenuItem("新建");
mopen=new JMenuItem("打开");
msave=new JMenuItem(" 保存");
msaveas=new JMenuItem(" 另保存");
mexit=new JMenuItem("退出");
mfile.add(mnew);mfile.add(mopen);mfile.add(msave);mfile.add(msaveas); mfile.add(mexit);
mcopy=new JMenuItem("复制");
mstick=new JMenuItem("粘贴");
mfind=new JMenuItem("查找");
mreplase=new JMenuItem("替换");
mcompile.add(mcopy);mcompile.add(mstick);mcompile.add(mfind);mcompile.add(mreplase);
mabout=new JMenuItem("关于");
mhelp.add(mabout);
jta=new JTextArea();
jsp=new JScrollPane(jta);
c.add(mb, BorderLayout.NORTH);
c.add(jsp,BorderLayout.CENTER);
//新建选项的监听器
mnew.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
mnew();
}
});
//open的监听器
mopen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
ShiYan1 sy=new ShiYan1("文本");
openFile=new FileDialog(sy,"打开",FileDialog.LOAD);
openFile.setVisible(true);
String path=openFile.getDirectory(); //获取路径
String fileName=openFile.getFile(); //获取文件名
theFileName=fileName;
thePath=path;
if(path!=null&&fileName!=null){
File file=new File(path,fileName);
try {
BufferedReader br=new BufferedReader(new FileReader(file));
jta.setText("");
String lineText=br.readLine();
while(lineText!=null){
jta.append(lineText+"\n");
lineText=br.readLine();
}
setTitle(fileName);
br.close();
issave=true;
} catch (FileNotFoundException e1) {
JOptionPane.showMessageDialog(null, "文件无法打开", "提示", JOptionPane.INFORMATION_MESSAGE);
}catch (IOException e1) {
JOptionPane.showMessageDialog(null, "文件无法打开", "提示", JOptionPane.INFORMATION_MESSAGE);
}
}
}
});
msave.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(issave==false){
ShiYan1 sy=new ShiYan1("文本");
resaveFile=new FileDialog(sy,"打开",FileDialog.SAVE);
resaveFile.setVisible(true);
String path=resaveFile.getDirectory(); //获取路径
String fileName=resaveFile.getFile(); //获取文件名
theFileName=fileName;
thePath=path;
if(path!=null&&fileName!=null){
File file=new File(path,fileName);
BufferedWriter br;
try {
br = new BufferedWriter(new FileWriter(file));
String text=jta.getText();
br.write(text);
br.close();
issave=true;
} catch (IOException e1) {
JOptionPane.showMessageDialog(null, "保存失败", "提示", JOptionPane.INFORMATION_MESSAGE);
}
}
}
else{
File file=new File(thePath,theFileName);
BufferedWriter br;
try {
br = new BufferedWriter(new FileWriter(file));
String text=jta.getText();
br.write(text);
br.close();
} catch (IOException e1) {
JOptionPane.showMessageDialog(null, "保存失败", "提示", JOptionPane.INFORMATION_MESSAGE);
}
}
}
});
//另存为的监听器
msaveas.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
resave();
}
});
//exit选项的监听器
mexit.addActionListener( new ActionListener(){ ///退出程序
public void actionPerformed(ActionEvent e){
System.exit(0);
}
});
mcopy.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
Object selectText=jta.getSelectedText();
}
});
mfind.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
JPanel swapPanel=new JPanel();
JLabel seekLabel=new JLabel("要查找的内容");
JTextField inputText=new JTextField(20);
swapPanel.add(seekLabel);
swapPanel.add(inputText);
JOptionPane.showMessageDialog(null ,swapPanel);
String text =jta.getText();
int fromIndex=jta.getCaretPosition();
int lastfromindex=text.indexOf(inputText.getText(),fromIndex);
jta.setCaretPosition(lastfromindex);
jta.moveCaretPosition(lastfromindex+inputText.getText().length());
}
}
);
mreplase.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
JPanel swapPanel=new JPanel();
JLabel lookupLabel=new JLabel("要替换的内容");
JTextField inputText=new JTextField(10);
JLabel swapLabel=new JLabel("替换为:");
JTextField changetoText=new JTextField(10);
swapPanel.add(lookupLabel);
swapPanel.add(inputText);
swapPanel.add(swapLabel);
swapPanel.add(changetoText);
JOptionPane.showMessageDialog(null, swapPanel);
String text=jta.getText();
String changeText=text.replaceFirst(inputText.getText(),changetoText.getText());
jta.setText(changeText);
}
}
);
mstick.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event) {
int position =jta.getCaretPosition();
jta.insert(selectText, position);
}
}
);
mabout.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(null,"\n作者:禚先林"+"\n\n"+"此文本由我编辑,如有疑问请致电:183661851**", getTitle(),JOptionPane.INFORMATION_MESSAGE);
}
});
}
public void mnew(){
ShiYan1 sy=new ShiYan1("文本");
}
public void resave(){
ShiYan1 sy=new ShiYan1("文本");
resaveFile=new FileDialog(sy,"打开",FileDialog.SAVE);
resaveFile.setVisible(true);
String path=resaveFile.getDirectory(); //获取路径
String fileName=resaveFile.getFile(); //获取文件名
theFileName=fileName;
thePath=path;
if(path!=null&&fileName!=null){
File file=new File(path,fileName);
BufferedWriter br;
try {
br = new BufferedWriter(new FileWriter(file));
String text=jta.getText();
br.write(text);
br.close();
issave=true;
} catch (IOException e1) {
JOptionPane.showMessageDialog(null, "保存失败", "提示", JOptionPane.INFORMATION_MESSAGE);
}
}
}
/*public void save(){
File file=new File(thePath,theFileName);
BufferedWriter br;
try {
br = new BufferedWriter(new FileWriter(file));
String text=jta.getText();
br.write(text);
br.close();
} catch (IOException e1) {
JOptionPane.showMessageDialog(null, "保存失败", "提示", JOptionPane.INFORMATION_MESSAGE);
}
}*/
public ShiYan1(String title){
super(title);
init();
}
public static void main(String []args){
ShiYan1 sy=new ShiYan1("文本软件");
sy.setSize(500,350);
sy.setVisible(true);
}
}