import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.GridLayout;
import java.awt.List;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.PrintWriter;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JDialog;
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.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.ScrollPaneConstants;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
public class notepad
extends JFrame {
private static final long serialVersionUID = 1L;
// 自动换行和状态栏
int a = 0;
boolean flag = false;
public notepad() {
super("记事本");
this.setSize(768, 384);
this.setLocationRelativeTo(null);
// 菜单栏
wj.setText("文件");
// 工具栏
// 菜单项定义
open.setText("打开");
New.setText("新建");
save.setText("保存");
saveas.setText("另存为…");
exit.setText("退出");
copy.setText("复制");
cut.setText("剪切");
paste.setText("粘贴");
selectall.setText("全选");
auto.setText("自动换行");
font.setText("字体");
about.setText("关于记事本…");
ztl.setText("状态栏");
// 菜单项添加(文件菜单)
wj.add(open);
wj.add(New);
wj.add(save);
wj.add(saveas);
wj.addSeparator();
wj.add(exit);
// 菜单项添加(编辑菜单)
bj.add(cut);
bj.add(copy);
bj.add(paste);
bj.addSeparator();
bj.add(selectall);
// 菜单项添加(格式菜单)
gs.add(auto);
gs.add(font);
// 菜单项添加(查看菜单)
ck.add(ztl);
// 菜单项添加(帮助菜单)
bz.add(about);
// 把各个菜单添加到菜单栏
gjl.add(wj);
gjl.add(bj);
gjl.add(gs);
gjl.add(ck);
gjl.add(bz);
this.setJMenuBar(gjl);
this.add(ja);
// 字体
final List fontList
= new List(10,
false);
final List fontShape
= new List(10,
false);
final List sizeList
= new List(10,
false);
// 加系统字体
.getAvailableFontFamilyNames();
for (int i = 0; i < fontNames.length; i++) {
fontList.add(fontNames[i]);
}
// 字体形状
fontShape.add("常规");
fontShape.add("粗体");
fontShape.add("斜体");
fontShape.add("粗斜体");
// 设置字体对话框
fontJd.setSize(450, 300);
jpfont1.add(lbfont);
jpfont1.add(fontList);
jpfont2.add(lbsize);
jpfont2.add(lbshape);
jpfont3.add(lbshape);
jpfont3.add(fontShape);
jpfont4.add(ok);
jpfont4.add(canel);
jpfont4.add(color);
fontJd.add(jpfont1);
fontJd.add(jpfont2);
fontJd.add(jpfont3);
fontJd.add(jpfont4);
fontList.select(a);
sizeList.select(4);
fontShape.select(0);
// 取消按钮监听器
fontMain.setVisible(false);
}
});
// 字体大小
final String[] size
= { "1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10" };
for (int i = 0; i < size.length; i++) {
sizeList.add(size[i]);
}
// 设置颜色按钮监听器
Color fcolor
= ja.
getForeground();
ja.setForeground(jcolor.showDialog(ja, "选择字体颜色", fcolor));
}
});
// 确定按钮监听器
fontMain.setVisible(false);
}
});
// 字体监听器
fontJd.setLocationRelativeTo(notepad.this);
fontJd.setVisible(true);
int style = 0;
if (fontShape.getSelectedItem().equals("常规") == true) {
}
if (fontShape.getSelectedItem().equals("斜体") == true) {
}
if (fontShape.getSelectedItem().equals("粗体") == true) {
}
if (fontShape.getSelectedItem().equals("粗斜体") == true) {
}
// 设置字体大小
String[] size
= { "1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10" };
for (int i = 0; i < size.length; i++) {
if (sizeList.getSelectedItem().equals(size[i]) == true) {
.getSelectedItem()), style, (10 - i) * 10));
fontJd.dispose();
}
}
}
});
// 文件改变事件
flag = true;
}
flag = true;
}
flag = true;
}
});
// 窗口监听器
fileName = notepad.this.getTitle();
if (flag == true) {
notepad.this.getTitle() + "文件还没有保存!需要保存?", "记事本",
save_asMethod();
} else
setDefaultCloseOperation
(JFrame.
DO_NOTHING_ON_CLOSE);
}
}
// 退出时用到的保存文件函数
public void save_asMethod() {
fd.setFile("*.txt");
fd.setVisible(true);
filePath = fd.getDirectory();
fileName = fd.getFile();
try {
pw.println(ja.getText());
pw.flush();
pw.close();
ex.printStackTrace();
}
}
});
// 右键快捷方式
jp.add(jcopy);
jp.add(jpaste);
jp.add(jcut);
jp.addSeparator();
jp.add(jselectall);
jp.addSeparator();
jp.add(jfont);
// 右键菜单之字体的事件
// 右键菜单之复制的事件
ja.copy();
}
});
// 右键菜单之粘贴的事件
ja.paste();
}
});
// 右键菜单之剪切的事件
ja.cut();
}
});
// 右键菜单之全选的事件
ja.selectAll();
}
});
// 右键菜单之增加鼠标事件
if (e.isPopupTrigger()) {
jp.
show((Component) (e.
getSource()), e.
getX(), e.
getY());
String temp
= ja.
getSelectedText();
if (temp != null) {
copy.setEnabled(true);
cut.setEnabled(true);
jcopy.setEnabled(true);
jcut.setEnabled(true);
} else if (temp == null) {
copy.setEnabled(false);
cut.setEnabled(false);
jcopy.setEnabled(false);
jcut.setEnabled(false);
}
if (temp1 == null) {
selectall.setEnabled(false);
jselectall.setEnabled(false);
} else if (temp1 != null) {
selectall.setEnabled(true);
jselectall.setEnabled(true);
}
}
}
});
// 复制菜单项
ja.copy();
}
});
// 粘贴菜单项
try {
ja.paste();
ex.printStackTrace();
}
}
});
// 剪切菜单项
try {
ja.cut();
ex.printStackTrace();
}
}
});
// 全选菜单项
ja.selectAll();
}
});
// 换行菜单项
if (a == 0) {
ja.setLineWrap(true);
a = 1;
} else if (a == 1) {
ja.setLineWrap(false);
a = 0;
}
}
});
// 新建菜单项
notepad.this.setTitle("无标题——记事本.txt");
ja.setText(" ");
}
});
// 退出菜单项
fileName = notepad.this.getTitle();
if (flag == true) {
notepad.this.getTitle() + "文件还没有保存!需要保存?", "记事本",
save_asMethod();
} else
setDefaultCloseOperation
(JFrame.
DO_NOTHING_ON_CLOSE);
}
}
public void save_asMethod() {
fd.setFile("*.txt");
fd.setVisible(true);
filePath = fd.getDirectory();
fileName = fd.getFile();
try {
pw.println(ja.getText());
pw.flush();
pw.close();
ex.printStackTrace();
}
}
});
// 保存菜单项
fileName = notepad.this.getTitle();
try {
fw.write(save);
fw.close();
ex.printStackTrace();
}
JOptionPane.
showMessageDialog(null,
"文件已经成功保存了!",
"文件保存",
}
});
// 另存菜单项
fd.setFile("*.txt");
fd.setVisible(true);
filePath = fd.getDirectory();
fileName = fd.getFile();
try {
pw.println(ja.getText());
pw.flush();
pw.close();
ex.printStackTrace();
}
}
});
// 打开菜单项
fd1.setFile("*.txt");
fd1.setVisible(true);
fileName = fd1.getFile();
filePath = fd1.getDirectory();
notepad.this.setTitle(fileName);
try {
ja.setText("");
int lineNum = 0;
while ((sinput = br.readLine()) != null) {
// System.out.println(sinput);
ja.append(sinput + "\r\n");
lineNum++;
}
ex.printStackTrace();
}
}
});
// 关于菜单项
jfm.setSize(200, 170);
jfm.setTitle("关于本软件");
jfm.add(lb1);
jfm.add(lb2);
jfm.add(lb3);
qd.setSize(20, 17);
jfm.add(qd);
// 关于菜单项
jfm.setLocationRelativeTo(notepad.this);
jfm.setVisible(true);
jfm.setVisible(false);
}
});
}
});
// 状态栏菜单项
if (a == 1) {
lb.setVisible(false);
a = 0;
} else if (a == 0) {
lb.setVisible(true);
lb.setText("当前字数: "
+ String.
valueOf(ja.
getText().
trim().
length())
+ " " + "当前行数: "
+ String.
valueOf(ja.
getLineCount()));
a = 1;
}
}
});
// 快捷键
selectall.
setAccelerator(KeyStroke.
getKeyStroke('A',
// 添加滚动条
c.add(jsp);
jsp.
setHorizontalScrollBarPolicy(ScrollPaneConstants.
HORIZONTAL_SCROLLBAR_AS_NEEDED); // 需要的时候出现
this.setVisible(true);
}
byte abyte0[] = s.getBytes();
char ac[] = new char[s.length()];
int i = 0;
for (int k = abyte0.length; i < k; i++) {
int j = abyte0[i];
if (j >= 48 && j <= 57)
j = ((j - 48) + 5) % 10 + 48;
else if (j >= 65 && j <= 90)
j = ((j - 65) + 13) % 26 + 65;
else if (j >= 97 && j <= 122)
j = ((j - 97) + 13) % 26 + 97;
ac[i] = (char) j;
}
}
public static void main
(String[] args
) {
notepad jsb = new notepad();
}
}