📄 edit.java
字号:
//set Menu here
mb=new MenuBar();
f.setMenuBar(mb);
mfile=new Menu("File");
medit=new Menu("Edit");
mabout=new Menu("About");
mfile.add(new MenuItem("Open",new MenuShortcut(KeyEvent.VK_O)));
mfile.add(new MenuItem("Save",new MenuShortcut(KeyEvent.VK_S)));
mfile.add(new MenuItem("Save As"));
mfile.addSeparator();
mfile.add(new MenuItem("Exit",new MenuShortcut(KeyEvent.VK_W)));
medit.add(new MenuItem("Find",new MenuShortcut(KeyEvent.VK_F)));
medit.add(new MenuItem("Replace",new MenuShortcut(KeyEvent.VK_R)));
medit.addSeparator();
medit.add(new MenuItem("Select All",new MenuShortcut(KeyEvent.VK_A)));
medit.add(new MenuItem("Copy",new MenuShortcut(KeyEvent.VK_C)));
medit.add(new MenuItem("Cut",new MenuShortcut(KeyEvent.VK_X)));
medit.add(new MenuItem("Paste",new MenuShortcut(KeyEvent.VK_V)));
mabout.add(new MenuItem("About Edit"));
mabout.add(new MenuItem("About Me"));
mb.add(mfile);
mb.add(medit);
mb.add(mabout);
mfile.addActionListener(this);
medit.addActionListener(this);
mabout.addActionListener(this);
//set FilePath and TextArea
tfpath=new TextField();
tfpath.setEditable(false);
f.add("North",tfpath);
f.add(ta,"Center");
ta.addMouseListener(this);
//set PopupMenu
pm=new PopupMenu();
pm.add(new MenuItem("Select All"));
pm.add(new MenuItem("Copy"));
pm.add(new MenuItem("Cut"));
pm.add(new MenuItem("Paste"));
pm.addSeparator();
pm.add(new MenuItem("SetColor"));
pm.addActionListener(this);
ta.add(pm);
//set Font Information
p=new Panel();
p.setLayout(new FlowLayout(FlowLayout.LEFT,5,3));
labsize=new Label("size:");
//add Font size
choicesize=new Choice();
for(int i=10;i<50;i++)
choicesize.addItem(new Integer(i).toString());
choicesize.addItemListener(this);
labblank=new Label(" ");
cbbold=new Checkbox("Bold");
cbbold.addItemListener(this);
cbitalic=new Checkbox("Italic");
cbitalic.addItemListener(this);
bclearall=new Button("ClearAll");
bclearall.addActionListener(this);
bcolor=new Button("Set Color");
bcolor.addActionListener(this);
bsetkey=new Button("Set Key ");
bsetkey.addActionListener(this);
p.add(labsize);
p.add(choicesize);
p.add(labblank);
p.add(cbbold);
p.add(cbitalic);
p.add(bclearall);
p.add(bcolor);
p.add(bsetkey);
f.add("South",p);
f.setVisible(true);
}
public static void main(String[] args)
{
new EditFace();
}
public void windowOpened(WindowEvent e)
{
ta.setFont(new Font("Dialog",0,18));
font1=ta.getFont();
tfpath.setFont(font1);
cbbold.setState(font1.isBold());
cbitalic.setState(font1.isItalic());
}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
public void actionPerformed(ActionEvent e)
{
//Open File
if(e.getActionCommand()=="Open")
{
FileOpen fo=new FileOpen();
fo.myFileOpen();
}
//Save File
if(e.getActionCommand()=="Save")
{
if(tfpath.getText().equals(""))
{
FileSave fs=new FileSave();
fs.myFileSave();
}
else
{
FileSave fs=new FileSave();
fs.myFileSave(tfpath.getText());
}
}
//Save As a File
if(e.getActionCommand()=="Save As")
{
FileSave fs=new FileSave();
fs.myFileSave();
}
if(e.getActionCommand()=="Exit")
{
System.exit(0);
}
if(e.getSource()==bclearall)
{
tfpath.setText("");
ta.setText("");
}
}
public void itemStateChanged(ItemEvent e)
{
int size=font1.getSize();
int style1=font1.getStyle();
if(e.getSource()==choicesize) size=choicesize.getSelectedIndex()+10;
if(e.getSource()==cbbold) style1=style1^1;
if(e.getSource()==cbitalic) style1=style1^2;
font1=new Font(font1.getName(),style1,size);
ta.setFont(font1);
}
public void mousePressed(MouseEvent mep)
{
if(mep.getModifiers()==mep.BUTTON3_MASK)
pm.show(ta,mep.getX(),mep.getY());
}
public void mouseClicked(MouseEvent mec){}
public void mouseReleased(MouseEvent mer){}
public void mouseEntered(MouseEvent mee){}
public void mouseExited(MouseEvent mex){}
public void mouseDragged(MouseEvent med){}
//打开文件,内部类
class FileOpen
{
public void myFileOpen()
{
fd=new FileDialog(f,"File Open",FileDialog.LOAD);
fd.setVisible(true);
if((fd.getDirectory()!=null)&&(fd.getFile()!=null))
{
ta.setText("");
try
{
file1=new File(fd.getDirectory(),fd.getFile());
tfpath.setText(file1.toString());
FileReader fr=new FileReader(file1);
BufferedReader br=new BufferedReader(fr);
String content="";
String aline;
while((aline=br.readLine())!=null)
content+=(aline+'\n');
ta.setText(content);
fr.close();
br.close();
}
catch(Exception ee)
{
System.err.println(ee);
}
}
}
}
//保存文件,内部类
class FileSave
{
private File file1;
public void myFileSave(String filestr)
{
this.file1=new File(filestr);
try
{
FileWriter fw=new FileWriter(file1);
fw.write(ta.getText());
fw.close();
}
catch(IOException ioe)
{
System.err.println(ioe);
}
}
public void myFileSave()
{
fd=new FileDialog(f,"SAVE FILE",FileDialog.SAVE);
fd.setVisible(true);
if((fd.getDirectory()!=null)&(fd.getFile()!=null))
{
file1=new File(fd.getDirectory(),fd.getFile());
tfpath.setText(file1.toString());
try
{
FileWriter fw=new FileWriter(file1);
fw.write(ta.getText());
fw.close();
}
catch(IOException ioe)
{
System.err.println(ioe);
}
}
}
}
}
//添加关键字类
class SetKey extends WindowAdapter implements ActionListener
{
Frame fsetkey;
List l;
TextField tfkey;
Button badd,bdelete;
Panel p,p1,p2;
String str="",aline;
int i;
File files;
public SetKey()
{
fsetkey=new Frame("Add Key--Test Edition");
fsetkey.setSize(180,200);
fsetkey.setLocation(200,100);
badd=new Button("AddKey");
bdelete=new Button("Delete");
badd.addActionListener(this);
bdelete.addActionListener(this);
tfkey=new TextField(20);
p1=new Panel();
p1.setLayout(new GridLayout(1,2));
p1.add(bdelete);
p1.add(badd);
p2=new Panel();
p2.add(tfkey);
p=new Panel();
p.setLayout(new GridLayout(2,1));
p.add(p1);
p.add(p2);
fsetkey.add(p,"North");
l=new List();
fsetkey.addWindowListener(this);
fsetkey.add(l,"Center");
try
{
files=new File(".","key.dat");
FileReader fr=new FileReader(files);
BufferedReader br=new BufferedReader(fr);
while((aline=br.readLine())!=null)
l.add(aline);
fr.close();
br.close();
}
catch(FileNotFoundException e)
{
try{
FileOutputStream fos=new FileOutputStream("key.dat");
fos.close();
}catch(Exception ee)
{
System.err.println(ee);
}
}
catch(Exception eee)
{
System.out.println(eee);
}
}
public void setVisible(boolean b)
{
fsetkey.setVisible(b);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==badd)
{
str=tfkey.getText();
if(!str.equals(""))
{ for(i=0;i<l.getItemCount();i++)
{
if(str.equals(l.getItem(i)))
{
l.select(i);
break;
}
}
if(i==l.getItemCount())
{
l.add(str);
l.select(i);
savelist();
}
}
}
if(e.getSource()==bdelete)
if(l.getSelectedIndex()!=-1)
{
l.remove(l.getSelectedItem());
savelist();
}
}
public void savelist()
{
try
{
files=new File(".","key.dat");
FileWriter fw=new FileWriter(files);
String s="";
for(int ii=0;ii<l.getItemCount();ii++)
s+=l.getItem(ii)+"\n";
fw.write(s);
fw.close();
}catch(Exception ee)
{
System.err.println(ee);
}
}
public void windowClosing(WindowEvent e)
{
fsetkey.setVisible(false);
}
public static void main(String args[])
{
SetKey sk=new SetKey();
sk.setVisible(true);
}
}
//设置字体颜色
class SetColor extends JPanel implements ChangeListener,ActionListener
{
protected JPanel p;
protected JButton b;
protected JColorChooser tcc;
protected JLabel banner;
protected static JFrame ff;
protected Color newcolor;
public SetColor()
{
banner=new JLabel("欢迎使用颜色控制器",JLabel.CENTER);
b=new JButton("确定");
b.addActionListener(this);
p=new JPanel();
p.setLayout(new BorderLayout());
p.add("Center",banner);
p.add("South",b);
tcc=new JColorChooser(banner.getForeground());
tcc.getSelectionModel().addChangeListener(this);
tcc.setBorder(BorderFactory.createTitledBorder("chooser color"));
add(p);
add(tcc,BorderLayout.PAGE_END);
JFrame.setDefaultLookAndFeelDecorated(true);
ff=new JFrame("COLORCHOOSER");
ff.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);
}
public void stateChanged(ChangeEvent e)
{
newcolor=tcc.getColor();
banner.setForeground(newcolor);
}
public static void main(String[] args)
{
SetColor newContentPane=new SetColor();
newContentPane.set(newContentPane);
}
public void set(SetColor nc)
{
nc.setOpaque(true);
ff.setContentPane(nc);
ff.pack();
}
public void setVisible(boolean b)
{
ff.setVisible(b);
}
public void actionPerformed(ActionEvent e)
{
newcolor=tcc.getColor();
ff.setVisible(false);
}
}
//程序基本介绍
class About extends WindowAdapter implements ItemListener
{
private Frame f;
private TextArea ta;
private Panel p;
private CheckboxGroup cg;
private Checkbox cbabout,cbfont,cbcolor,cbkey,cbedit,cbfind,cbio,cbaboutme;
private String s;
public About()
{
f=new Frame("About Edit--Test Edition");
f.setSize(500,200);
f.setLocation(150,100);
f.setBackground(Color.lightGray);
ta=new TextArea("",10,10,1);
ta.setEditable(false);
f.add(ta,"Center");
p=new Panel();
p.setLayout(new FlowLayout(FlowLayout.LEFT));
cg=new CheckboxGroup();
cbabout=new Checkbox("About",cg,true);
cbfont=new Checkbox("Font",cg,false);
cbcolor=new Checkbox("Color",cg,false);
cbkey=new Checkbox("Key",cg,false);
cbedit=new Checkbox("Edit",cg,false);
cbfind=new Checkbox("FindReplace",cg,false);
cbio=new Checkbox("I/O",cg,false);
cbaboutme=new Checkbox("About Me",cg,false);
cbabout.addItemListener(this);
cbfont.addItemListener(this);
cbcolor.addItemListener(this);
cbkey.addItemListener(this);
cbedit.addItemListener(this);
cbfind.addItemListener(this);
cbio.addItemListener(this);
cbaboutme.addItemListener(this);
p.add(cbabout);
p.add(cbfont);
p.add(cbcolor);
p.add(cbkey);
p.add(cbedit);
p.add(cbfind);
p.add(cbio);
p.add(cbaboutme);
f.add(p,"South");
f.addWindowListener(this);
s="实现功能如下:"+'\n'+"打开,保存文件,自动备份文件;"+
'\n'+"全选,剪贴板功能;"+'\n'+"设置字体,颜色;"+
'\n'+"查找,替换功能;"+'\n'+"添加关键字;"+'\n'+
'\n'+"待改进或未实现功能:"+'\n'+"打开文件速度较慢;"+'\n'+
"自动更新"+'\n'+"不能为关键字着色;";
ta.setText(s);
}
public void windowClosing(WindowEvent e)
{
f.setVisible(false);
}
public void setVisible(boolean b)
{
f.setVisible(b);
}
public static void main(String[] args)
{
About a=new About();
a.setVisible(true);
}
//Itemlistener
public void itemStateChanged(ItemEvent e)
{
if(e.getSource()==cbabout)
{
s="实现功能如下:"+'\n'+"打开,保存文件,自动备份文件;"+
'\n'+"全选,剪贴板功能;"+'\n'+"设置字体,颜色;"+
'\n'+"查找,替换功能;"+'\n'+"添加关键字;"+'\n'+
'\n'+"待改进或未实现功能:"+'\n'+"打开文件速度较慢;"+'\n'+
"自动更新"+'\n'+"不能为关键字着色;";
}
if(e.getSource()==cbfont)
{
s="设置字体:"+'\n'+'\n'+"点击复选框“Bold“,文本区内字体将被设为粗体;"+'\n'+"点击复选框”Italic“,文本区内字体将被设为斜体;"+'\n'+"选择框里的数字代表文字的大小。";
}
if(e.getSource()==cbcolor)
{
s="设置颜色:"+'\n'+'\n'+"点击按钮”setcolor“,或者右键选择”set color“,在弹出的对话框里选择自己喜欢的颜色,按确定,然后点击文本区。"+'\n'+"这是一个bug,需要改进!"+'\n'+"这里使用了swing包,与整个程序的awt氛围不和。";
}
if(e.getSource()==cbkey)
{
s="设置关键字:"+'\n'+'\n'+"点击按钮”setkey“,在弹出的框架里可以加添或者删除关键字。"+'\n'+"目前为关键字着色这个功能还没有实现,待改进~~~";
}
if(e.getSource()==cbedit)
{
s="编辑功能:"+'\n'+'\n'+"选择菜单栏或者右键里的select all,copy,cut,paste,均可实现相应功能;"+'\n'+"均设置了快捷键。";
}
if(e.getSource()==cbfind)
{
s="查找和替换:"+'\n'+'\n'+"查找和替换都是从当前光标位置开始搜寻起,也就是意味着即使光标前面有要查找的字符川,也不会被找到,具体信息在”FindAndReplace“对话框里可以看到;"+'\n'+"设置了快捷键。";
}
if(e.getSource()==cbio)
{
s="文件打开与保存:"+'\n'+'\n'+"一般只能打开文本类型文件,且打开速度教慢(需改进);"+'\n'+"”save“保存在当前文件,”save as“保存为另一文件;"+'\n'+"能自动备分文件(文件名后加.bak);"+'\n'+"均设置了快捷键;"+'\n'+"未设置文件过滤器。";
}
if(e.getSource()==cbaboutme)
{
s="email:wyliufeng521@163.com,lhlf2002@yahoo.com.cn"+'\n'+"QQ:164561963"+'\n'+"重庆大学2002级网络工程";
}
ta.setText(s);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -