文件名称:小型简单的记事本程序
文件大小:17KB
文件格式:JAVA
更新时间:2011-12-26 18:06:21
NotePad
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()); } }