资源介绍
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
public class NotePad {
public static void main(String[] args){
myfr fr=new myfr("猪猪java记事本");
fr.setLocation(100,100);
fr.setSize(750,650);
}
}
///////////////////////////myfr主窗体类//////////////////////////////////////
class myfr extends JFrame implements ActionListener{
String str,strnext,path,fname; //部分变量的声明
JPanel mainpane;
JFileChooser choose = new JFileChooser(); //文件对话框
Dialog find,replace; //find为查找对话框,replace对话框
JTextField findtxt,repltxt; //find为查找对话框的输入文本区,replace对话框的输入文本区
Font newfont;
JButton findenter,replb; //find为查找对话框,replace对话框的确定按钮
JLabel state=new JLabel(" 猪猪java记事本------"); //状态栏
JTextArea txt1; //主输入文本区
File newfiles;
JPopupMenu popm; //弹出菜单声明
JMenu m1,m2,m3,m4,m5,m6; //各菜单项
JMenuItem m61,m62,m26,m271,m34,m51,m52,m53,m54,p_copy,p_cut,p_paste,p_del;
int startp,endp,nexttemp,newstartp,newendp; //查找替换时所用的临时变量
JToolBar toolbar = new JToolBar(); //工具条
JButton newf=new JButton(new ImageIcon("9.jpg")); //图标在PIC下
JButton open=new JButton(new ImageIcon("2.jpg"));
JButton save=new JButton(new ImageIcon("3.jpg"));
JButton copy=new JButton(new ImageIcon("6.jpg"));
JButton cut=new JButton(new ImageIcon("7.jpg"));
JButton pp=new JButton(new ImageIcon("8.jpg"));
JButton del=new JButton(new ImageIcon("pic/del.gif"));
JButton findc=new JButton(new ImageIcon("9.jpg"));
JButton color=new JButton(new ImageIcon("10.jpg"));
JButton help=new JButton(new ImageIcon("pic/help.gif"));
JButton exit=new JButton(new ImageIcon("pic/exit.gif"));
myfr(String sss){ /////构造函数开始
super(sss);
JMenuBar mb=new JMenuBar();
fname=null; //初始文件名为空
findenter=new JButton("确定");
findenter.addActionListener(this); //声明对话框中上确定按钮,并注册事件
replb=new JButton("确定");
replb.addActionListener(this);
mainpane=(JPanel)this.getContentPane();
mainpane.setLayout(new BorderLayout());
txt1=new JTextArea("",13,61);
txt1.addMouseListener(new handlemouse(this));//注册鼠标右击事件
txt1.setFont(new Font("宋体",Font.PLAIN,18));
mainpane.add(txt1, BorderLayout.CENTER);
mainpane.add("North",toolbar);
mainpane.add("South",state);
JScrollPane sll = new JScrollPane(); //创建滚动条
mainpane.add("Center", sll); ;
sll.getViewport().add(txt1); //将滚动条装入文本区
//文本栏中的浮动条
popm=new JPopupMenu(); ////POPMeun 开始
p_copy=new JMenuItem("复制 ");
p_copy.addActionListener(this);
KeyStroke keycopyp=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK);
p_copy.setAccelerator(keycopyp);
p_cut=new JMenuItem("剪切 ");
p_cut.addActionListener(this);
KeyStroke keycutp=KeyStroke.getKeyStroke(KeyEvent.VK_X,Event.CTRL_MASK);
p_cut.setAccelerator(keycutp);
p_paste=new JMenuItem("粘贴 ");
p_paste.addActionListener(this);
KeyStroke keypp=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK);
p_paste.setAccelerator(keypp);
p_del=new JMenuItem("删除 ");
p_del.addActionListener(this);
KeyStroke keydelp=KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0);
p_del.setAccelerator(keydelp);
popm.add(p_copy);
popm.add(p_cut);
popm.add(p_paste);
popm.add(p_del);
txt1.add(popm); ////POPMenu 结束
m1=new JMenu("文件(F)");
m1.setMnemonic('F'); //定义快捷方式
JMenuItem m10=new JMenuItem("新建 ");
m10.addActionListener(this); //注册事件监听器
KeyStroke keynew=KeyStroke.getKeyStroke(KeyEvent.VK_N,Event.CTRL_MASK); //定义快捷键
m10.setAccelerator(keynew);
JMenuItem m11=new JMenuItem("打开 ");
m11.addActionListener(this);
KeyStroke keyopen=KeyStroke.getKeyStroke(KeyEvent.VK_O,Event.CTRL_MASK);
m11.setAccelerator(keyopen);
JMenuItem m12=new JMenuItem("保存 ");
m12.addActionListener(this);
KeyStroke keysave=KeyStroke.getKeyStroke(KeyEvent.VK_S,Event.CTRL_MASK);
m12.setAccelerator(keysave);
JMenuItem m13=new JMenuItem("另保存为 ");
m13.addActionListener(this);
JMenuItem m14=new JMenuItem("退出 ");
m14.addActionListener(this);
KeyStroke keyexit=KeyStroke.getKeyStroke(KeyEvent.VK_F4,Event.ALT_MASK);
m14.setAccelerator(keyexit);
////////////////////////////////////////////
m2=new JMenu("编辑(E)");
m2.setMnemonic('E');
JMenuItem m21=new JMenuItem("复制 ");
m21.addActionListener(this);
KeyStroke keycopy=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK);
m21.setAccelerator(keycopy);
JMenuItem m22=new JMenuItem("剪切 ");
m22.addActionListener(this);
KeyStroke keycut=KeyStroke.getKeyStroke(KeyEvent.VK_X,Event.CTRL_MASK);
m22.setAccelerator(keycut);
JMenuItem m23=new JMenuItem("粘贴 ");
m23.addActionListener(this);
KeyStroke keyp=KeyStroke.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK);
m23.setAccelerator(keyp);
JMenuItem m24=new JMenuItem("删除 ");
m24.addActionListener(this);
KeyStroke keydel=KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,0);
m24.setAccelerator(keydel);
JMenuItem m25=new JMenuItem("查找 ");
m25.addActionListener(this);
KeyStroke keyfind=KeyStroke.getKeyStroke(KeyEvent.VK_F,Event.CTRL_MASK);
m25.setAccelerator(keyfind);
m26=new JMenuItem("查找下一个 ");
m26.addActionListener(this);
KeyStroke keyfn=KeyStroke.getKeyStroke(KeyEvent.VK_F3,0);
m26.setAccelerator(keyfn);
m26.setEnabled(false);
JMenuItem m27=new JMenuItem("替换 ");
m27.addActionListener(this);
KeyStroke keyrepl=KeyStroke.getKeyStroke(KeyEvent.VK_H,Event.CTRL_MASK);
m27.setAccelerator(keyrepl);
m271=new JMenuItem("替换下一个");
m271.setEnabled(false);
m271.addActionListener(this);
KeyStroke keyrepn=KeyStroke.getKeyStroke(KeyEvent.VK_F6,0);
m271.setAccelerator(keyrepn);
JMenuItem m28=new JMenuItem("全选 ");
m28.addActionListener(this);
KeyStroke keyall=KeyStroke.getKeyStroke(KeyEvent.VK_A,Event.CTRL_MASK);
m28.setAccelerator(keyall);
JMenuItem m29=new JMenuItem("日期/时间 ");
m29.addActionListener(this);
m3=new JMenu("格式(O)");
m3.setMnemonic('O');
JMenu m31=new JMenu("字体样式 ");
JMenuItem m311=new JMenuItem("正常 ");
m311.addActionListener(this);
JMenuItem m312=new JMenuItem("粗体 ");
m312.addActionListener(this);
JMenuItem m313=new JMenuItem("斜体 ");
m313.addActionListener(this);
JMenu m32=new JMenu("字体大小 ");
JMenuItem m321=new JMenuItem("最大 ");
m321.addActionListener(this);
JMenuItem m322=new JMenuItem("较大 ");
m322.addActionListener(this);
JMenuItem m323=new JMenuItem("适中 ");
m323.addActionListener(this);
JMenuItem m324=new JMenuItem("较小 ");
m324.addActionListener(this);
JMenuItem m325=new JMenuItem("最小 ");
m325.addActionListener(this);
JMenuItem m33=new JMenuItem("字体颜色 ");
m33.addActionListener(this);
m34=new JMenuItem("自动换行 ");
m34.addActionListener(this);
m5=new JMenu("视图风格(V)");
m5.setMnemonic('V');
//m51=new JMenuItem("系统风格 ");
//m51.addActionListener(this);
m52=new JMenuItem("MOTIF风格 ");
m52.addActionListener(this);
m53=new JMenuItem("默认风格 ");
m53.addActionListener(this);
m54=new JMenuItem("状态栏 ");
m54.addActionListener(this);
m6=new JMenu("帮助(H)");
m6.setMnemonic('H');
m61=new JMenuItem("帮助主题 ");
m61.addActionListener(this);
m62=new JMenuItem("关于 ");
m62.addActionListener(this);
//添加各项
m1.add(m10); m1.add(m11); m1.add(m12); m1.add(m13); m1.addSeparator(); m1.add(m14);
m2.add(m21); m2.add(m22); m2.add(m23); m2.add(m24); m2.addSeparator(); m2.add(m25);
m2.add(m26); m2.add(m27); m2.add(m271); m2.addSeparator(); m2.add(m28);
m2.add(m29); m3.add(m31); m31.add(m311); m31.add(m312); m31.add(m313);
m3.add(m32); m32.add(m321); m32.add(m322); m32.add(m323); m32.add(m324);
m32.add(m325); m3.add(m33); m3.addSeparator(); m3.add(m34); //m5.add(m51);
m5.add(m52); m5.add(m53); m5.addSeparator(); m5.add(m54); m6.add(m61);
m6.addSeparator(); m6.add(m62); mb.add(m1); mb.add(m2); mb.add(m3);
mb.add(m5); mb.add(m6); this.setJMenuBar(mb); //设置菜单栏
toolbar.add(newf); //工具栏各按钮
newf.setToolTipText("新建");
newf.addActionListener(this);
//toolbar.add(open);
//open.setToolTipText("打开");
//open.addActionListener(this);
//toolbar.add(save);
//save.setToolTipText("保存");
//save.addActionListener(this);
//toolbar.addSeparator();
toolbar.add(copy);
copy.setToolTipText("复制");
copy.addActionListener(this);
toolbar.add(cut);
cut.setToolTipText("剪切");
cut.addActionListener(this);
toolbar.add(pp);
pp.setToolTipText("粘贴");
pp.addActionListener(this);
//toolbar.add(del);
//del.setToolTipText("删除");
//del.addActionListener(this);
toolbar.addSeparator();
//toolbar.add(findc);
//findc.setToolTipText("查找");
//findc.addActionListener(this);
toolbar.add(color);
color.setToolTipText("字体颜色");
color.addActionListener(this);
toolbar.addSeparator();
//toolbar.add(help);
//help.setToolTipText("帮助主题");
//help.addActionListener(this);
//toolbar.add(exit);
//exit.setToolTipText("退出");
//exit.addActionListener(this);
setVisible(true);
pack();
show();
this.addWindowListener(new xxx(this));
}///构造函数结束///
////////////////事件处理/////////////////////////////////////
public void actionPerformed(ActionEvent p){
if(p.getActionCommand()=="新建 "||p.getSource()==newf){ //响应菜单及工具栏事件
fname=null; //置文件名为空,便于判断文件是否保存过
txt1.setText("");
state.setText(" 猪猪java记事本------");
}
if(p.getActionCommand()=="打开 "||p.getSource()==open){
try {
if(this.choose.APPROVE_OPTION==this.choose.showOpenDialog(this)){
path=this.choose.getSelectedFile().getPath();
fname=this.choose.getSelectedFile().getName();
File file=new File(path);
int flength=(int)file.length();
FileReader fReader=new FileReader(file);
char[] data=new char[flength];
fReader.read(data,0,flength);
txt1.setText(new String(data));
state.setText(" 猪猪java记事本------"+path+" 共"+flength+"字节");//状态栏统计文件字节数
txt1.setCaretPosition(0);
}
}catch(IOException e){}
}
if(p.getActionCommand()=="保存 "||p.getSource()==save){
if(fname==null){ othersave(); } //如果文件名为空,说明文件未被创建,弹出另存为对话框
try {
File savefile=new File(path);
savefile.createNewFile();
FileWriter fw=new FileWriter(savefile);
fw.write(txt1.getText());
fw.close();
}catch(IOException e){}
}
if(p.getActionCommand()=="另保存为 "){
othersave();
}
if(p.getActionCommand()=="退出 "||p.getSource()==exit){
exit();
}
//////////////////编辑////////////////////
if(p.getActionCommand()=="复制 "||p.getSource()==copy)
{ txt1.copy(); }
if(p.getActionCommand()=="剪切 "||p.getSource()==cut)
{ txt1.cut(); }
if(p.getActionCommand()=="粘贴 "||p.getSource()==pp)
{ txt1.paste(); }
if(p.getActionCommand()=="删除 "||p.getSource()==del){
txt1.replaceSelection("");
}
///////////////////////////////////////////////////////
if(p.getActionCommand()=="全选 "){
txt1.selectAll(); }
if(p.getActionCommand()=="日期/时间 "){ //用DATE类插入当前日期/时间,编译时会出现说明
int inpoint=txt1.getCaretPosition();
Date dt=new Date();
String strdate=dt.toLocaleString();
txt1.insert(strdate,inpoint);}
//格式//
//////////字体样式////////////////
if(p.getActionCommand()=="正常 "){
newfont=txt1.getFont(); //得到当前应用字体,获得字体大小,创建相应样式
int size=newfont.getSize();
txt1.setFont(new Font("宋体",Font.PLAIN,size)); }
if(p.getActionCommand()=="粗体 "){
newfont=txt1.getFont();
int size=newfont.getSize();
txt1.setFont(new Font("宋体",Font.BOLD,size)); }
if(p.getActionCommand()=="斜体 "){
newfont=txt1.getFont();
int size=newfont.getSize();
txt1.setFont(new Font("宋体",Font.ITALIC,size)); }
////////////字体大小/////////////////
if(p.getActionCommand()=="最大 "){
newfont=txt1.getFont(); ////得到当前应用字体,获得字体样式,创建相应字体的大小
int sty=newfont.getStyle() ;
txt1.setFont(new Font("宋体",sty,35)); }
if(p.getActionCommand()=="较大 "){
newfont=txt1.getFont();
int sty=newfont.getStyle() ;
txt1.setFont(new Font("宋体",sty,30)); }
if(p.getActionCommand()=="适中 "){
newfont=txt1.getFont();
int sty=newfont.getStyle() ;
txt1.setFont(new Font("宋体",sty,18)); }
if(p.getActionCommand()=="较小 "){
newfont=txt1.getFont();
int sty=newfont.getStyle() ;
txt1.setFont(new Font("宋体",sty,16)); }
if(p.getActionCommand()=="最小 "){
newfont=txt1.getFont();
int sty=newfont.getStyle() ;
txt1.setFont(new Font("宋体",sty,14)); }
if(p.getActionCommand()=="字体颜色 "||p.getSource()==color){ //字体颜色
JColorChooser jColor=new JColorChooser(); //调用颜色面板,设置前景就可更改字体颜色
Color fcolor=txt1.getForeground();
txt1.setForeground( jColor.showDialog(txt1,"选择字体颜色",fcolor)); }
if(p.getActionCommand()=="自动换行 "){
txt1.setLineWrap(true);
m34.setEnabled(false);}
//if(p.getActionCommand()=="系统风格 ") //不稳定,在不同编译平台下表现不一致
// { }
if(p.getActionCommand()=="MOTIF风格 "){
this.dispose();
myfr ww=new myfr("我的javaX记事本");
try { //MOTIF界面
UIManager.setLookAndFeel("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
SwingUtilities.updateComponentTreeUI(ww);
}catch ( Exception e ) {}
}
if(p.getActionCommand()=="默认风格 "){
this.dispose();
myfr ww=new myfr("猪猪java记事本");
try {
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
SwingUtilities.updateComponentTreeUI(ww);
}catch ( Exception e ) {}
}
if(p.getActionCommand()=="状态栏 ") //状态栏的隐藏和显视
{state.setVisible( !(state.isVisible()) );}
/////////////////////帮助///////////////////////////////////////////
if(p.getActionCommand()=="帮助主题 "||p.getSource()==help){
myhelp help=new myhelp();
help.setSize(200,240);}
if(p.getActionCommand()=="关于 "){
JLabel prompt=new JLabel("欢迎使用我的JAVAX记事本",JLabel.CENTER);
JOptionPane.showMessageDialog(null,prompt,"关于我的JAVAX记事本",JOptionPane.INFORMATION_MESSAGE);
}
}
public void othersave() {//另存为方法
if(choose.APPROVE_OPTION==choose.showSaveDialog(this)){
path=choose.getSelectedFile().getPath();
newfiles=new File(path);
state.setText(" 猪猪java记事本------"+path);
fname=choose.getSelectedFile().getName();;
try {
newfiles=new File(path);
newfiles.createNewFile();
FileWriter fw=new FileWriter(newfiles);
fw.write(txt1.getText());
fw.close();
}catch(IOException e){}
}
}
public void notfindmethod(){ //提示查找不到的方法notfindmethod
if(!txt1.getSelectedText().equals(findtxt.getText())) {
txt1.setCaretPosition(0); //光标返回文件头部
JOptionPane.showMessageDialog(null,"查找不到对应的字符!","查找错误",JOptionPane.ERROR_MESSAGE);
m26.setEnabled(false); }
}
public void exit(){
int value;
String[] qq={"返回", "退出"};
value=JOptionPane.showOptionDialog(null, "你确定退出吗?请注意保存文件!", "退出程序?",
JOptionPane.DEFAULT_OPTION, JOptionPane.QUESTION_MESSAGE,null, qq, qq[0]);
if(value==JOptionPane.YES_OPTION)
return;
else if(value==JOptionPane.NO_OPTION) {
System.exit(0); }
}
}//主窗口类结束//
class xxx extends WindowAdapter{ //关闭窗口XXX类////////////
myfr fx;
xxx(myfr fxx)
{fx=fxx;}
public void windowClosing(WindowEvent e){
JOptionPane.showMessageDialog(null,"欢迎使用本软件!","退出",JOptionPane.INFORMATION_MESSAGE);
fx.dispose();
System.exit(0);
}
}
class xxxhelp extends WindowAdapter{ //关闭帮助主题窗口类XXXhelp
myhelp fx;
xxxhelp(myhelp fxx){
fx=fxx;}
public void windowClosing(WindowEvent e){
fx.dispose();
}
}
class myhelp extends JFrame{ //帮助主题类/////////////////
TextArea helparea;
myhelp()
{
super("我的帮助主题");
helparea=new TextArea("",45,25,TextArea.SCROLLBARS_NONE);//创建没有滚动条的帮助窗口
helparea.setText(" ");
helparea.append("我的JAVAX记事本是一个用来创建简单的文档的基本的文本编辑器.可用于打开查看TXT文档。");
helparea.append("要编辑文字,请先选定它,然后单击相应菜单上的相关命令。");
helparea.append("鼠标悬停在工具栏上会出现相关提示。本软件在SDK 1.40下编写,");
helparea.append("最好在1.4环境下运行,否则会出现一些小问题,但不影响正常使用……");
setResizable(false);
getContentPane().add(helparea);
show();pack();
helparea.setFont(new Font("宋体",Font.PLAIN,14));
helparea.setEnabled(false);
addWindowListener(new xxxhelp(this));
}
}
class handlemouse extends MouseAdapter //处理右键弹出菜单类
{
myfr fx;
handlemouse(myfr fxx){
fx=fxx;
}
public void mouseReleased(MouseEvent n){
if(n.isPopupTrigger())
fx.popm.show((Component)n.getSource(),n.getX(),n.getY());
}
}