|
package notepad;
import java.awt.Button;
import java.awt.Dialog;
import java.awt.FileDialog;
import java.awt.Font;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.List;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Panel;
import java.awt.PopupMenu;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
/**
* @author root
*
*/
public class NotePad {
private Frame mainframe;// 主框架
private MenuBar mb; // 菜单条
private Menu mFile, mEdit, mFont, mPassword, mHelp;// 菜单:文件,编辑,字体,加密,帮助
private MenuItem mNew, mOpen, mSave, mNewSave, mClose;// 文件:新建,打开,保存,另存为,退出
private MenuItem mCopy, mPaste, mCut, mDelete;// 编辑:拷贝,粘贴,剪切,删除
private MenuItem mFontFont, mFontSize, mFontColor;// 字体:
private MenuItem mEncrypt, mDisencrypt;// 加密:加密,解密
private MenuItem mAboutNotePad,mDos,mJava,mLinux; // 帮助:关于记事本,dos命令,java类,linux命令
private PopupMenu mPopup;// 弹出菜单
private MenuItem mPopupCopy, mPopupPaste, mPopupCut, mPopupDelete;// 弹出菜单项:拷贝,粘贴,剪切,删除
private TextArea text;// 文本区
private boolean textValueChanged = false;
private String FileName = ""; // 上次保存时的文件名和地址
private int index_list;
// 构造函数
/**
* 构造函数里完成监听
*/
public NotePad() {
mainframe = new Frame("我的记事本 不杀生的狼");
// 菜单条
mb = new MenuBar();
mFile = new Menu("文件");
mEdit = new Menu("编辑");
mFont = new Menu("字体");
mPassword = new Menu("加密");
mHelp = new Menu("帮助");
// 文件
mNew = new MenuItem("新建");
mOpen = new MenuItem("打开");
mSave = new MenuItem("保存");
mNewSave = new MenuItem("另存为");
mClose = new MenuItem("退出");
// 编辑
mCopy = new MenuItem("拷贝");
mPaste = new MenuItem("粘贴");
mCut = new MenuItem("剪切");
mDelete = new MenuItem("删除");
// 字体
mFontFont = new MenuItem("字体");
mFontSize = new MenuItem("大小");
mFontColor = new MenuItem("颜色");
// 加密
mEncrypt = new MenuItem("加密");
mDisencrypt = new MenuItem("解密");
// 帮助
mAboutNotePad = new MenuItem("关于记事本");
mDos=new MenuItem("Dos常用命令");
mLinux=new MenuItem("Linux常用命令");
mJava=new MenuItem("Java常用类");
// 文本
text = new TextArea();
// 添加文件菜单项
mFile.add(mNew);
mFile.add(mOpen);
mFile.add(mSave);
mFile.add(mNewSave);
mFile.add(mClose);
// 添加编辑菜单项
mEdit.add(mCopy);
mEdit.add(mPaste);
mEdit.add(mCut);
mEdit.add(mDelete);
// 添加字体菜单项
mFont.add(mFontFont);
mFont.add(mFontSize);
mFont.add(mFontColor);
// 添加加密菜单项
mPassword.add(mEncrypt);
mPassword.add(mDisencrypt);
// 添加帮助菜单项
mHelp.add(mAboutNotePad);
mHelp.add(mDos);
mHelp.add(mLinux);
mHelp.add(mJava);
// 菜单条添加菜单
mb.add(mFile);
mb.add(mEdit);
mb.add(mFont);
mb.add(mPassword);
mb.add(mHelp);
// 框架添加菜单条
mainframe.setMenuBar(mb);
// 框架添加文本区
mainframe.add(text);
mainframe.setSize(800, 500);// 设置大小
mainframe.setLocation(100, 100);// 设置窗体出现起始位置
mainframe.setResizable(true);// 设置是否可以改变窗体大小,默认为true
mainframe.setVisible(true);// 设置为可见
/**
*
* 添加监听
*/
// 关闭窗口
mainframe.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
// 键入某个键时文本改动
text.addKeyListener(new KeyAdapter() {
public void keyTyped(KeyEvent e) {
textValueChanged = true;
}
});
// 新建
mNew.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
text.replaceRange("", 0, text.getText().length());// 清空文本区
}
});
// 打开
mOpen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
FileDialog d = new FileDialog(mainframe, "", FileDialog.LOAD);
d.setVisible(true);
FileName = d.getDirectory() + d.getFile();
File f = new File(d.getDirectory() + d.getFile());
try {
BufferedReader br = new BufferedReader(new FileReader(f));
String a;
StringBuffer buff = new StringBuffer();
while ((a = br.readLine()) != null) {
buff.append(a + "\n");
}
br.close();
text.setText(buff.toString());
} catch (Exception e1) {
e1.getMessage();
}
}
});
// 保存
mSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String a = text.getText();
if (FileName.equals("")) { // 为""表示文件没有被保存过
FileDialog d = new FileDialog(mainframe, "",
FileDialog.SAVE);
d.setVisible(true);
File f = new File(d.getDirectory() + d.getFile());
FileName = d.getDirectory() + d.getFile();
try {
BufferedWriter bw = new BufferedWriter(
new FileWriter(f));
System.out.println(a);
bw.write(a, 0, a.length());
bw.close();
} catch (IOException e1) {
e1.getMessage();
}
} else {
File f = new File(FileName);
try {
BufferedWriter bw = new BufferedWriter(
new FileWriter(f));
bw.write(a);
bw.close();
} catch (IOException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
}
}
});
// 另存为
mNewSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
FileDialog d = new FileDialog(mainframe, "", FileDialog.SAVE);
d.setVisible(true);
File f = new File(d.getDirectory() + d.getFile());
String a = text.getText();// 获得文本内容
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(f));
bw.write(a);
bw.close();
} catch (IOException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}
}
});
// 退出
mClose.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
// 字体
mFontFont.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
final Dialog d = new Dialog(mainframe, "字体设置");
d.setVisible(true);// 设置为可见
d.setLayout(new GridLayout(2, 1));// 设置为网格布局
d.setLocation(250, 250);// 起始位置
d.setResizable(false);// 用户不可更改大小
Panel p = new Panel();
// 第1行
List l = new List();// 字体列表
p.add(l);
l.add("楷书");
l.add("隶书");
l.add("幼圆");
l.add("华文彩云");
l.addItemListener(new Item_Font());//添加字体列表监听
// 第2行
Panel p_1 = new Panel();
Button b = new Button("确定");
// 添加确定按钮监听
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
d.dispose();
}
});
p_1.add(b);
d.add(p);
d.add(p_1);
d.pack(); // 调整此窗口的大小,以适合其子组件的首选大小和布局
// 关闭对话框
d.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent ee) {
d.dispose();
}
});
}
});
// 大小
mFontSize.addActionListener(new ActionListener() {
/* (非 Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
final Dialog d = new Dialog(mainframe, "字体大小");
d.setLocation(250, 250);// 起始位置
d.setLayout(new GridLayout(2, 1));// 网格布局
d.setVisible(true);// 设置为可见
d.setResizable(false);// 用户不可更改大小
Panel p = new Panel();
List l = new List();
l.add("8");
l.add("9");
l.add("10");
l.add("11");
l.add("12");
l.add("14");
l.add("16");
l.add("18");
Panel p_1 = new Panel();
Button b = new Button("确定");
// 字体大小确定监听
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
d.dispose();
}
});/*
p.add(l);
p_1.add(b);// 将组件放入容器
d.add(p);
d.add(p_1);// 将容器放入对话框
*/ d.pack();
// 关闭对话框
d.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent ee) {
d.dispose();
}
});
}
});
// 颜色
mFontColor.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
final Dialog d = new Dialog(mainframe, "字体颜色");
d.setLocation(250, 250);// 起始位置
d.setLayout(new GridLayout(2, 1));// 网格布局
d.setVisible(true);// 设置为可见
d.setResizable(false);// 用户不可更改大小
Panel p = new Panel();
Panel p_1 = new Panel();
Button b = new Button("确定");
// 确定按钮监听
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
d.dispose();
}
});
List l = new List();
l.add("红色");
l.add("黄色");
l.add("蓝色");
l.add("绿色");
l.add("紫色");
p.add(l);
p_1.add(b);
d.add(p);
d.add(p_1);
d.pack();
// 关闭对话框
d.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
d.dispose();
}
});
}
});
/*
*
* 加密菜单
* */
mEncrypt.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
String s = text.getText();//得到所输入的文本内容
StringBuffer temp = new StringBuffer("");
for(int i = 0 ; i<s.length() ; i++){
if(s.charAt(i)>=40 && s.charAt(i)<=125){
if(i%2==0){
temp.append((char)(s.charAt(i) + 1 ));
}
else
temp.append((char)(s.charAt(i) - 1 ));
}
else
temp.append(s.charAt(i));
}
s = new String(temp);
text.setText(s);
}
});
//解密
mDisencrypt.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent e){
String s = text.getText();//得到所输入的文本内容
StringBuffer temp = new StringBuffer("");
for(int i = 0 ; i<s.length() ; i++){
if(s.charAt(i)>=40 && s.charAt(i)<=125){
if(i%2==0){
temp.append((char)(s.charAt(i) - 1 ));
}
else
temp.append((char)(s.charAt(i) + 1 ));
}
else
temp.append(s.charAt(i));
}
s = new String(temp);
text.setText(s);
}
});
mDos.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
Dialog d=new Dialog(mainframe,"Dos常用命令");
d.setLocation(200,200);
d.setVisible(true);
TextArea t=new TextArea();
t.setText("");
}
});
}
private class Item_Font implements ItemListener{
public void itemStateChanged(ItemEvent e) {
index_list=((java.awt.List)e.getSource()).getSelectedIndex();//获得最初发生事件的索引
System.out.println(index_list);
switch(index_list){
case 0:{
text.setFont(new Font("Impact", 0,text.getFont().getSize()));
System.out.println(text.getFont());
break;
}
case 1:{
text.setFont(new Font("Times New Roman", Font.PLAIN ,text.getFont().getSize()) );
break;
}
}
}
}
public static void main(String[] args) {
new NotePad();
}
} |
|