📄 jishiben.java
字号:
package com.zk1;
import java.util.*;
import java.awt.*;
import javax.swing.*;
import javax.swing.undo.*;
import javax.swing.event.*;
import javax.swing.border.*;
import java.awt.event.*;
import java.io.*;
public class JiShiBen extends JFrame {
private FaceAndSize fc = new FaceAndSize();
private Tihuan ti = new Tihuan();
private Chazhao cz = new Chazhao();
private Zhuandao zd = new Zhuandao();
private About about1 = new About();
private JTextArea jta=new JTextArea();
private JScrollPane jsp=new JScrollPane(jta);
private File file=new File("未定标题");
final UndoManager undo = new UndoManager();
private static String st1="";//打开文本路径
private static String st2="";// 保存后文本区
private static String st3="";//打开后文本区
private static String st4="";//保存路径
private static boolean b=true;//自动换行
//构造函数
public JiShiBen(){
super("未定标题 -记事本");
this.setIconImage(Toolkit.getDefaultToolkit().getImage("jishiben.gif"));
JMenuBar jmb=new JMenuBar();
jmb.setOpaque(true);
JMenu jm=fileMenu();
jmb.add(jm);
JMenu jm1=fileMenu1();
jmb.add(jm1);
JMenu jm2=fileMenu2();
jmb.add(jm2);
JMenu jm3=fileMenu3();
jmb.add(jm3);
this.setJMenuBar(jmb);
Container cp = getContentPane();
cp.add(jsp);
this.setLocation(250,50);
this.setSize(500,650);
this.setVisible(true);
//主窗口关闭监听功能
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent w)
{
int n;
String str="";
str=jta.getText();
if ("".equals(st1)){//当前文本不是打开的
if("".equals(str) || str.equals(st2)){//当前文本没有被修改 或 修改过已经保存
System.exit(0);
}
else{//当前文本修改过但没有保存
n = JOptionPane.showConfirmDialog(null,file+" 文件的文字已经改变.想保存文件吗?","记事本",JOptionPane.YES_NO_CANCEL_OPTION);
if (n==0){
save_exit();//先保存在退出方法
}
if (n==1){
System.exit(0);
}
if (n==2){
}
}
}
else{//当前文本是打开的
if(str.equals(st3) || str.equals(st2)){//当前文本没有被修改 或 修改过已经保存
System.exit(0);
}
else{//当前文本修改过但没有保存
n = JOptionPane.showConfirmDialog(null,file+" 文件的文字已经改变.想保存文件吗?","记事本",JOptionPane.YES_NO_CANCEL_OPTION);
if (n==0){
save_exit();//先保存在退出方法
}
if (n==1){
System.exit(0);
}
if (n==2){
}
}
}
}
});
//撤销与重做监听
jta.getDocument().addUndoableEditListener (new UndoableEditListener(){
public void undoableEditHappened(UndoableEditEvent evt){
undo.addEdit(evt.getEdit());
}
});
}
//文件菜单栏
public JMenu fileMenu(){
JMenu thefile=new JMenu("文件(F)");
JMenuItem newf=new JMenuItem("新建(N)",'N');
newf.setAccelerator(KeyStroke.getKeyStroke('N',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),true));
JMenuItem open=new JMenuItem("打开(O)...",'O');
open.setAccelerator(KeyStroke.getKeyStroke('O',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),true));
JMenuItem save=new JMenuItem("保存(S)",'S');
save.setAccelerator(KeyStroke.getKeyStroke('S',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),true));
JMenuItem savea=new JMenuItem("另存为(A)...",'A');
JMenuItem pages=new JMenuItem("页面设置(U)...",'U');
JMenuItem print=new JMenuItem("打印(P)...",'P');
print.setAccelerator(KeyStroke.getKeyStroke('P',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),true));
JMenuItem quit=new JMenuItem("退出(X)",'X');
thefile.add(newf);
newf.addActionListener(new Newf());
thefile.add(open);
open.addActionListener(new Open());
thefile.add(save);
save.addActionListener(new Save());
thefile.add(savea);
savea.addActionListener(new Savea());
thefile.addSeparator();
thefile.add(pages);
pages.addActionListener(new Pages());
thefile.add(print);
print.addActionListener(new Print());
thefile.addSeparator();
thefile.add(quit);
quit.addActionListener(new Quit());
return thefile;
}
//编辑菜单栏
public JMenu fileMenu1(){
JMenu compilation=new JMenu("编辑(E)");
JMenuItem chexiao=new JMenuItem("撤销(U)",'U');
chexiao.setAccelerator(KeyStroke.getKeyStroke('Z',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),true));
JMenuItem chongzuo=new JMenuItem("重做(R)",'R');
chongzuo.setAccelerator(KeyStroke.getKeyStroke('Y',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),true));
JMenuItem cut=new JMenuItem("剪切(T)",'T');
cut.setAccelerator(KeyStroke.getKeyStroke('X',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),true));
JMenuItem copy=new JMenuItem("复制(C)",'C');
copy.setAccelerator(KeyStroke.getKeyStroke('C',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),true));
JMenuItem paste=new JMenuItem("粘贴(P)",'P');
paste.setAccelerator(KeyStroke.getKeyStroke('V',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),true));
JMenuItem dele=new JMenuItem("删除(L)",'L');
JMenuItem lookup=new JMenuItem("查找(F)...",'F');
lookup.setAccelerator(KeyStroke.getKeyStroke('F',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),true));
JMenuItem findn=new JMenuItem("查找下一个(N)",'N');
JMenuItem swap=new JMenuItem("替换(R)...",'R');
swap.setAccelerator(KeyStroke.getKeyStroke('H',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),true));
JMenuItem got=new JMenuItem("转到(G)...",'G');
got.setAccelerator(KeyStroke.getKeyStroke('G',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),true));
JMenuItem checka=new JMenuItem("全选(A)",'A');
checka.setAccelerator(KeyStroke.getKeyStroke('A',Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(),true));
JMenuItem time=new JMenuItem("时间/日期(D)",'D');
compilation.add(chexiao);
chexiao.addActionListener(new Chexiao());
compilation.add(chongzuo);
chongzuo.addActionListener(new Chongzuo());
compilation.addSeparator();
compilation.add(cut);
cut.addActionListener(new Cut());
compilation.add(copy);
copy.addActionListener(new Copy());
compilation.add(paste);
paste.addActionListener(new Paste());
compilation.add(dele);
dele.addActionListener(new Dele());
compilation.addSeparator();
compilation.add(lookup);
lookup.addActionListener(new Lookup());
compilation.add(findn);
findn.addActionListener(new Lookup());
compilation.add(swap);
swap.addActionListener(new Swap());
compilation.add(got);
got.addActionListener(new Got());
compilation.addSeparator();
compilation.add(checka);
checka.addActionListener(new Checka());
compilation.add(time);
time.addActionListener(new Time());
return compilation;
}
//格式菜单栏
public JMenu fileMenu2(){
JMenu format=new JMenu("格式(O)");
JCheckBoxMenuItem linew=new JCheckBoxMenuItem("自动换行(W)");
JMenuItem fontf=new JMenuItem(" 字体(F)...",'F');
format.add(linew);
linew.addActionListener(new Linew());
format.add(fontf);
fontf.addActionListener(new Fontf());
return format;
}
//帮助菜单栏
public JMenu fileMenu3(){
JMenu help=new JMenu("帮助(H)");
JMenuItem helpm=new JMenuItem("帮助主题(H)",'H');
JMenuItem awp=new JMenuItem("关于记事本(A)",'A');
help.add(helpm);
helpm.addActionListener(new Helpm());
help.addSeparator();
help.add(awp);
awp.addActionListener(new Awp());
return help;
}
//普通打开文件方法
public void opened(){
JFileChooser c = new JFileChooser();
c.setFileFilter(new TextFileFilter());
int rVal = c.showOpenDialog(this);
if(rVal == JFileChooser.APPROVE_OPTION) {
st1=c.getCurrentDirectory().toString();
file = c.getSelectedFile();
this.setTitle(c.getSelectedFile().getName()+" -记事本");
int b;
String s="";
try {
FileReader fr=new FileReader(file);
while((b=fr.read())!=-1){
s=s+((char)b);
}
jta.setText(s);
st3=jta.getText();
st2="";
st4="";
fr.close();
undo.discardAllEdits();
}
catch (IOException ioe) {
throw new RuntimeException(ioe);
}
}
}
//打开功能中的先保存再打开方法
public void save_open(){
JFileChooser c = new JFileChooser(file);
c.setFileFilter(new TextFileFilter());
int rVal = c.showSaveDialog(this);
if(rVal == JFileChooser.APPROVE_OPTION) {
file = c.getSelectedFile();
this.setTitle(c.getSelectedFile().getName()+" -记事本");
int b;
String s="";
try {
s=jta.getText();
FileWriter fw=new FileWriter(file);
fw.write(s);
st2=jta.getText();
st4=c.getCurrentDirectory().toString();
opened();
fw.close();
}
catch (IOException ioe) {
throw new RuntimeException(ioe);
}
}
}
//普通弹出式保存文件方法
public void saveed(){
JFileChooser c = new JFileChooser(file);
c.setFileFilter(new TextFileFilter());
int rVal = c.showSaveDialog(this);
if(rVal == JFileChooser.APPROVE_OPTION) {
file = c.getSelectedFile();
this.setTitle(c.getSelectedFile().getName()+" -记事本");
int b;
String s="";
try {
s=jta.getText();
FileWriter fw=new FileWriter(file);
fw.write(s);
st2=jta.getText();
st4=c.getCurrentDirectory().toString();
fw.close();
}
catch (IOException ioe) {
throw new RuntimeException(ioe);
}
}
}
//先保存在退出方法
public void save_exit(){
JFileChooser c = new JFileChooser(file);
c.setFileFilter(new TextFileFilter());
int rVal = c.showSaveDialog(this);
if(rVal == JFileChooser.APPROVE_OPTION) {
file = c.getSelectedFile();
this.setTitle(c.getSelectedFile().getName()+" -记事本");
int b;
String s="";
try {
s=jta.getText();
FileWriter fw=new FileWriter(file);
fw.write(s);
st2=jta.getText();
st4=c.getCurrentDirectory().toString();
fw.close();
}
catch (IOException ioe) {
throw new RuntimeException(ioe);
}
System.exit(0);
}
}
//新建功能中保存文件并清零方法
public void newsaveed(){
JFileChooser c = new JFileChooser(file);
c.setFileFilter(new TextFileFilter());
int rVal = c.showSaveDialog(this);
if(rVal == JFileChooser.APPROVE_OPTION) {
file = c.getSelectedFile();
int b;
String s="";
try {
s=jta.getText();
FileWriter fw=new FileWriter(file);
fw.write(s);
fw.close();
clear();
}
catch (IOException ioe) {
throw new RuntimeException(ioe);
}
}
}
//无弹出文件框的保存文件方法
public void usaveed(){
int b;
String s="";
try{
s=jta.getText();
FileWriter fw=new FileWriter(file);
fw.write(s);
st2=jta.getText();
fw.close();
}
catch (IOException ioe) {
throw new RuntimeException(ioe);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -