文本编辑器源代码(一)上
import java.awt.*;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.event.*;
import java.awt.print.PrinterJob;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.*;
import javax.swing.text.PlainDocument;
public class TxtEditor extends JFrame implements
ActionListener{
JMenuBar jb=new JMenuBar();//创建菜单条
JMenu f=new JMenu("文件(F)");//创建下拉菜单
JMenu e=new JMenu("编辑(E)");
JMenu o=new JMenu("设置(O)");
JMenu h=new JMenu("帮助(H)");
JTextArea t=new JTextArea();//创建文本域
JMenuItem open=new JMenuItem("打开(O)");//创建菜单里的元素
JMenuItem newf=new JMenuItem("新建(N)");
JMenuItem save=new JMenuItem("保存(S)");
JMenuItem saveas=new JMenuItem("另存为(A)");
JMenuItem print=new JMenuItem("打印(P)");
JMenuItem page=new JMenuItem("页面设置(U)");
JMenuItem exit=new JMenuItem("退出(X)");
JMenuItem copy=new JMenuItem("复制(C)");
JMenuItem paste=new JMenuItem("粘贴(P)");
JMenuItem cut=new JMenuItem("剪切(T)");
JMenuItem delete=new JMenuItem("删除(D)");
JMenuItem search=new JMenuItem("查找(F)");
JMenuItem selectAll=new JMenuItem("全选(A)");
JMenuItem date=new JMenuItem("日期/时间(S)");
JMenuItem font=new JMenuItem("字体(F)");
JMenuItem color=new JMenuItem("字体颜色(C)");
JMenuItem bcolor=new JMenuItem("背景颜色(B)");
JMenuItem help=new
JMenuItem("帮助主题(H)");
JMenuItem about=new JMenuItem("关于记事本(A)");
Label wel=new
Label("欢迎来到Java世界,让我们一起来体验它的乐趣!",Label.CENTER);//创建标签
Clipboard clipbd =
getToolkit().getSystemClipboard();//创建提取系统剪贴板的组件
PrinterJob prt = PrinterJob.getPrinterJob(); //创建链接系统打印组件
public TxtEditor(){
setLayout(new BorderLayout());//边界布局
addWindowListener(new WindowAdapter(){//关闭拥有框架的窗口
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
wel.setBackground(Color.green);
t.setBackground(new Color(199,237,204));
f.add(newf);//把菜单里的元素添加到菜单里
f.add(open);
f.add(save);
f.addSeparator();//添加下拉菜单的分割线
f.add(saveas);
f.add(print);
f.add(page);
f.addSeparator();
f.add(exit);
e.add(cut);
e.add(copy);
e.add(paste);
e.addSeparator();
e.add(search);
e.add(delete);
e.add(selectAll);
e.addSeparator();
e.add(date);
o.add(font);
o.add(color);
o.add(bcolor);
h.add(help);
h.add(about);
jb.add(f);//把菜单添加到菜单条里
jb.add(e);
jb.add(o);
jb.add(h);
jb.add(wel);
add("North",jb);//把组件(菜单条,文本域)添加到容器(框架)中
add("South",t);
add(new JScrollPane(t));//添加自动显示滚动条
//为菜单里的元素添加键盘事件监听,也就是快捷键
newf.setMnemonic('N');
newf.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));
open.setMnemonic('O');
open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
save.setMnemonic('S');
save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
saveas.setMnemonic('A');
saveas.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.ALT_MASK));
page.setMnemonic('U');
page.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK));
print.setMnemonic('P');
print.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
exit.setMnemonic('X');
exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.ALT_MASK));
cut.setMnemonic('T');
cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
copy.setMnemonic('C');
copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
paste.setMnemonic('P');
paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));
delete.setMnemonic(KeyEvent.VK_DELETE);
delete.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.ALT_MASK));
search.setMnemonic('F');
search.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));
selectAll.setMnemonic('A');
selectAll.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));
date.setMnemonic('s');
date.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.ALT_MASK));
font.setMnemonic('F');
color.setMnemonic('C');
bcolor.setMnemonic('B');
help.setMnemonic('H');
about.setMnemonic('A');
//为菜单元素捕获行为事件
newf.addActionListener(new newL());
open.addActionListener(new openL());
save.addActionListener(new saveL());
saveas.addActionListener(new saveasL());
print.addActionListener(new printL());
page.addActionListener(new pageL());
exit.addActionListener(new exitL());
copy.addActionListener(new copyL());
cut.addActionListener(new cutL());
paste.addActionListener(new pasteL());
delete.addActionListener(new deleteL());
selectAll.addActionListener(new selectAllL());
search.addActionListener(new searchL());
date.addActionListener(new dateL());
color.addActionListener(this);
font.addActionListener(new fontL());
bcolor.addActionListener(this);
about.addActionListener(new aboutL());
help.addActionListener(new helpL());
setSize(640,480);
setLocation(200,150);
setVisible(true);
setTitle("记事本编辑器");
}
//构造行为监听器
class newL implements ActionListener { //新建监听
public void actionPerformed(ActionEvent e) {
t.setDocument(new PlainDocument());
}
}
class openL implements ActionListener{ //打开监听
public void actionPerformed(ActionEvent e)
{
JFileChooser fc=new JFileChooser();
int returnVal=fc.showDialog(TxtEditor.this, "Open file");
if(returnVal==JFileChooser.APPROVE_OPTION) {
String file=fc.getSelectedFile().getPath();
if(file == null) {
return;
}
try
{
Reader in = new FileReader(file);
char[] buff=new char[9999999];
int nch;
while((nch=in.read(buff,0,buff.length))!=-1) {
t.append(new String(buff,0,nch));
}
}
catch (IOException io) {
System.err.println("IOException: " + io.getMessage());
}
}
else {
return;
}
}
}
class saveL implements ActionListener { //保存监听
public void actionPerformed(ActionEvent e) {
JFileChooser fc=new JFileChooser();
int returnVal=fc.showSaveDialog(TxtEditor.this);
if(returnVal==JFileChooser.APPROVE_OPTION) {
String savefile=fc.getSelectedFile().getPath();
if(savefile == null) {
return;
}
else {
String docToSave = t.getText();
if(docToSave != null) {
FileOutputStream fstrm = null;
BufferedOutputStream ostrm = null;
try {
fstrm = new FileOutputStream(savefile);
ostrm = new BufferedOutputStream(fstrm);
byte[] bytes = null;
try {
bytes = docToSave.getBytes();
} catch(Exception e1) {
e1.printStackTrace();
}
ostrm.write(bytes);
} catch(IOException io)
{
System.err.println("IOException: " + io.getMessage());
}
finally{
try {
ostrm.flush();
fstrm.close();
ostrm.close();
} catch(IOException ioe) {
System.err.println("IOException: " + ioe.getMessage());
}
}
}
}
}
else {
return;
}
}
}
class saveasL implements ActionListener{//另存为监听
public void actionPerformed(ActionEvent e) {
try {
JFileChooser fileSaveAs = new JFileChooser();
fileSaveAs.setDialogTitle("另存为");
fileSaveAs.addChoosableFileFilter(fileSaveAs.getFileFilter());
if (fileSaveAs.APPROVE_OPTION !=
fileSaveAs.showSaveDialog(TxtEditor.this)) {
return;
}
BufferedWriter dataOut = new BufferedWriter(new BufferedWriter(new
FileWriter(fileSaveAs.getSelectedFile())));
String str = null;
str = t.getText();
dataOut.write(str);
dataOut.close();
} catch (IOException e1) {
System.out.println("另存文件时发现一个" + e1.toString() + "异常");
}
}
}
运行效果截图: