📄 texteditor.java
字号:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
class TextEditor extends Frame
{ Dialog d;
MenuBar menubar=new MenuBar();
Menu filefile=new Menu("文件");
Menu editedit=new Menu("工具");
Menu helphelp=new Menu("帮助");
MenuItem[] file=
{
new MenuItem("新建",new MenuShortcut(KeyEvent.VK_N)),
new MenuItem("打开",new MenuShortcut(KeyEvent.VK_O)),
new MenuItem("保存",new MenuShortcut(KeyEvent.VK_S)),
new MenuItem("退出",new MenuShortcut(KeyEvent.VK_X))
};
MenuItem[] edit=
{
new MenuItem("统计",new MenuShortcut(KeyEvent.VK_C)),
new MenuItem("翻转",new MenuShortcut(KeyEvent.VK_R))
};
MenuItem[] help=
{
new MenuItem("帮助",new MenuShortcut(KeyEvent.VK_H)),
new MenuItem("关于",new MenuShortcut(KeyEvent.VK_A))
};
TextArea text=new TextArea(300,300);
public TextEditor(String s)
{
super(s);
ML ml=new ML();
file[0].setActionCommand("新建");
file[0].addActionListener(ml);
file[1].setActionCommand("打开");
file[1].addActionListener(ml);
file[2].setActionCommand("保存");
file[2].addActionListener(ml);
file[3].setActionCommand("退出");
file[3].addActionListener(ml);
edit[0].setActionCommand("统计");
edit[0].addActionListener(ml);
edit[1].setActionCommand("翻转");
edit[1].addActionListener(ml);
help[0].setActionCommand("帮助");
help[0].addActionListener(ml);
help[1].setActionCommand("关于");
help[1].addActionListener(ml);
filefile.add(file[0]);
filefile.add(file[1]);
filefile.add(file[2]);
filefile.addSeparator();
filefile.add(file[3]);
editedit.add(edit[0]);
editedit.add(edit[1]);
helphelp.add(help[0]);
helphelp.add(help[1]);
menubar.add(filefile);
menubar.add(editedit);
menubar.add(helphelp);
setMenuBar(menubar);
text.setEditable(true);
add(text,BorderLayout.CENTER);
}
class ML implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
MenuItem target=(MenuItem)e.getSource();
String actionCommand=target.getActionCommand();
if(actionCommand.equals("新建"))
{
text.setText("");
}
else if(actionCommand.equals("打开"))
{
Frame fr1=new Frame("Border Layout");
FileDialog dr1=new FileDialog(fr1,"打开文件");
dr1.setVisible(true);
String dirname=dr1.getDirectory();
String fname=dr1.getFile();
fr1.setSize(200,200);
fr1.setVisible(false);
if(fname!=null)
{
StringBuffer bfl=new StringBuffer(dirname);
bfl.append("\\").append(fname);
String myfile=bfl.toString();
try
{
String c;
BufferedReader sfl=new BufferedReader(new FileReader(myfile));
text.setText("");
while((c=sfl.readLine())!=null)
text.append(c+"\n");
sfl.close();
}
catch(IOException er)
{
er.printStackTrace();
System.out.println("I/O Error!");
}
System.out.println("文件名:"+myfile);
}
fr1.dispose();
}
else if(actionCommand.equals("保存"))
{
Frame fr1=new Frame("Border Layout");
FileDialog dr1=new FileDialog(fr1,"保存文件");
dr1.setVisible(true);
String dirname=dr1.getDirectory();
String fname=dr1.getFile();
fr1.setSize(200,200);
fr1.setVisible(false);
if(fname!=null)
{
StringBuffer bf1=new StringBuffer(dirname);
bf1.append("\\").append(fname);
String myfile=bf1.toString();
try
{
PrintWriter dfl=new PrintWriter(new FileWriter(myfile));
dfl.println(text.getText());
dfl.close();
}
catch(IOException er)
{
er.printStackTrace();
System.out.println("IO Error!");
}
System.out.println("文件名:"+myfile);
}
fr1.dispose();
}
else if(actionCommand.equals("退出"))
{
dispatchEvent(new WindowEvent(TextEditor.this,WindowEvent.WINDOW_CLOSING));
}
else if(actionCommand.equals("统计"))
{
int n,nn=0;
int i;
String temp1=text.getText();
n=temp1.length();
char t[]=temp1.toCharArray();
for(i=0;i<n;i++)
if(t[i]=='\n')
nn++;
Frame fr2=new Frame("Count");
d=new Dialog(fr2,"统计",false);
Label l=new Label("");
l.setText("字符数(不包括换行符):"+String.valueOf(n-nn)+" 换行符:"+nn);
d.add(l,BorderLayout.CENTER);
d.pack();
d.setVisible(true);
d.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
d.dispose();
}
});
System.out.println(n);
}
else if(actionCommand.equals("翻转"))
{
//text.setText("");
try
{
PrintWriter dfl=new PrintWriter(new FileWriter("$$$.tmp"));
dfl.println(text.getText());
dfl.close();
}
catch(IOException er)
{
er.printStackTrace();
System.out.println("IO Error!");
}
//System.out.println("文件名:$$$.tmp");
try
{
String temp1,temp2;
String c;
BufferedReader sfl=new BufferedReader(new FileReader("$$$.tmp"));
text.setText("");
while((c=sfl.readLine())!=null)
{
temp2="";
temp1=c;
int n=c.length();
char temp_char[]=temp1.toCharArray();
//System.out.println(n);
for(int i=n-1;i>=0;i--)
temp2+=temp_char[i];
//System.out.println(temp2);
if(temp2!="")
text.append(temp2+'\n');
}
sfl.close();
}
catch(IOException er)
{
er.printStackTrace();
System.out.println("I/O Error!");
}
}
else if(actionCommand.equals("帮助"))
{
}
else if(actionCommand.equals("关于"))
{
Frame fr1=new Frame("About");
d=new Dialog(fr1,"关于",true);
Label About=new Label("Designed for One, Designed for One Trillion");
d.add(About,BorderLayout.CENTER);
d.pack();
d.setVisible(true);
d.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
d.setVisible(false);
}
}
);
}
}
}
public static void main(String[] args)
{
TextEditor f=new TextEditor("记事本");
f.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
f.setSize(600,400);
f.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -