用Java编写的一个小记事本 拼搏现实的明天。 2022-08-09 04:28 162阅读 0赞 这是在学校做的一个小记事本,在网上看过一些记事本的代码,大多是一些比较有经验的前辈所编写的,算法比较精妙,精简。对于Java初学者来说,我有一个比较简单的思想。![用Java编写的一个小记事本][Java] 要编写出一个记事本,至少需要拥有两方面的知识:1.图形用户界面(GUI)程序设计 2.文件的输入和输出 ![用Java编写的一个小记事本][Java] 我的基本思想就是;"先把记事本的框架先做好,再逐步添加监听。" import java.awt.\*; import java.awt.event.\*; import javax.swing.\*; import javax.swing.event.\*; import java.io.\*;//以上是导入各种所用到的包 public class Mynotebook \{ public static void main(String args\[\])\{ MyFrame frame=new MyFrame();//这个主函数是框架 frame.setTitle("我的记事本"); frame.setSize(300,350); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT\_ON\_CLOSE); \} \} class MyFrame extends JFrame \{ JTextArea jt1=new JTextArea();//设置文本域对象 File f; String result=""; boolean flag=true; String value; JButton jbt=new JButton("替换为");//按钮 JButton jba=new JButton("全部替换"); JTextField jtf=new JTextField(15); JTextField jt=new JTextField(15); int start=0; JFrame frame=new JFrame(); //以上是添加 JPanel textPanel=new JPanel();//面板 JMenu jmu1=new JMenu("文件");//菜单主项 JMenuItem jmi1=new JMenuItem("新建");//以下是在菜单项里加入目录 JMenuItem jmi2=new JMenuItem("打开"); JMenuItem jmi3=new JMenuItem("保存"); JMenuItem jmi4=new JMenuItem("另存为"); JMenuItem jmi5=new JMenuItem("退出"); JMenu jmu2=new JMenu("编辑"); JMenuItem jmi6=new JMenuItem("复制"); JMenuItem jmi7=new JMenuItem("粘贴"); JMenuItem jmi8=new JMenuItem("查找替换"); JMenu jmu3=new JMenu("帮助"); final JMenuItem jmi9=new JMenuItem("关于编辑器"); JMenuItem jmi10=new JMenuItem("帮助主题"); public MyFrame()\{ textPanel.setLayout(new BorderLayout());//设置布局 jmi2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK\_O,ActionEvent.CTRL\_MASK));//设置快捷键 jmi3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK\_S,ActionEvent.CTRL\_MASK)); jmi5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK\_W,ActionEvent.CTRL\_MASK)); jmi6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK\_C,ActionEvent.CTRL\_MASK)); jmi7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK\_V,ActionEvent.CTRL\_MASK)); JMenuBar jmb=new JMenuBar();//菜单条 setJMenuBar(jmb); jmb.add(jmu1);//将设置的对象,添加到对应的地方才能实现功能。添加就如“大盒子里面套小盒子...” jmb.add(jmu2); jmb.add(jmu3); jmu1.add(jmi1); jmu1.add(jmi2); jmu1.add(jmi3); jmu1.add(jmi4); jmu1.add(jmi5); jmu2.add(jmi6); jmu2.add(jmi7); jmu2.add(jmi8); jmu3.add(jmi9); jmu3.add(jmi10); Container contentPane=getContentPane();//内容窗口 contentPane.add(textPanel,BorderLayout.CENTER); textPanel.add(jt1); jmi1.addActionListener (new ActionListener()\{ //第一个监听,“新建” public void actionPerformed(ActionEvent e) \{ if(e.getSource()==jmi1); jt1.setText(null); \} \} ); jmi5.addActionListener (new ActionListener()\{ //“退出”(我是由简单到难,所以监听顺序不一样) public void actionPerformed(ActionEvent e) \{ if(e.getSource()==jmi5); System.exit(0); \} \} ); jmi9.addActionListener (new ActionListener()\{ //监听,“关于编辑器”,设置的一个标签 public void actionPerformed(ActionEvent e) \{ if(e.getSource()==jmi9); JFrame jd=new JFrame("关于编辑器"); jd.setSize(100,100); JLabel a=new JLabel("WINGS-旗下开发产品-"+"周忠华制作"); jd.add(a,BorderLayout.CENTER); jd.setLocation(100,200); jd.setSize(300,300); jd.setVisible(true); jd.setDefaultCloseOperation(JFrame.DISPOSE\_ON\_CLOSE); \} \} ); jmi10.addActionListener (new ActionListener()\{//监听,“帮助主题”,设置一个文本域,再不可编辑 public void actionPerformed(ActionEvent e) \{ textPanel.setLayout(new BorderLayout()); JFrame frame=new JFrame("帮助主题"); Container contentPane=getContentPane();//内容窗口 contentPane.add(textPanel,BorderLayout.CENTER); JPanel textPanel=new JPanel();//面板 String help="WINGS-旗下帮助:\\n" \+"新建:重新开始一个文本框\\n" \+"打开:打开一个指定文件\\n" \+"保存:保存当前你所修改\\n" \+"另存为:保存在一个指定文件中\\n" \+"退出:退出记事本\\n" \+"复制:复制你想要的信息\\n" \+"粘贴:把你所剪贴或复制的信息拷贝下来\\n" \+"查找替换:找到你想要找到的信息并替换所有相同的信息\\n" \+"关于记事本:产品出处\\n" \+"帮助主题:当前所打开的文本框"; JTextArea jt2=new JTextArea(); jt2=new JTextArea(30,20); jt2.setEditable(false);//不可编辑 textPanel.add(jt2); jt2.setText(help); frame.add(textPanel,BorderLayout.CENTER); frame.setSize(350,250); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.DISPOSE\_ON\_CLOSE); \} \} ); jmi6.addActionListener (new ActionListener()\{ //监听,“复制”,一个函数搞定 public void actionPerformed(ActionEvent e) \{ if(e.getSource()==jmi6); jt1.copy(); \} \} ); jmi7.addActionListener (new ActionListener()\{ //监听,“粘贴” public void actionPerformed(ActionEvent e) \{ if(e.getSource()==jmi7); String b; b=jt1.getText(); jt1.paste(); \} \} ); jmi2.addActionListener (new ActionListener()\{ //监听,“打开” public void actionPerformed(ActionEvent e) \{ if(e.getSource()==jmi2); MyFrame frame=new MyFrame(); JFileChooser jfc=new JFileChooser(); jfc.setDialogType(JFileChooser.OPEN\_DIALOG); jfc.showOpenDialog(null); f=jfc.getSelectedFile(); frame.setTitle(f.getName()); flag=false; jt1.setText(read()); \} \}); jmi3.addActionListener (new ActionListener()\{ //监听,“保存” public void actionPerformed(ActionEvent e) \{ if(e.getSource()==jmi3); JFileChooser jfc=new JFileChooser(); if(flag)\{ jfc.showOpenDialog(null); f=jfc.getSelectedFile(); flag=false; write(); \}else\{ write(); \} \} \} ); jmi4.addActionListener (new ActionListener()\{//监听,“另存为” public void actionPerformed(ActionEvent e) \{ if(e.getSource()==jmi4); JFileChooser jfc=new JFileChooser(); jfc.showOpenDialog(null); f=jfc.getSelectedFile(); flag=false; write(); \} \} ); jmi8.addActionListener(new ActionListener()\{ //查找替换 public void actionPerformed(ActionEvent e) \{ if(e.getSource()==jmi8)\{ JFrame thjf=new JFrame("替换"); value=jt1.getText(); GridLayout gl=new GridLayout(3,2); JLabel jl1=new JLabel("查找内容:"); JLabel jl2=new JLabel("替换为:"); thjf.setLayout(gl); thjf.add(jl1); thjf.add(jtf); thjf.add(jl2); thjf.add(jt); thjf.add(jbt); thjf.add(jba); thjf.setLocation(300,300); thjf.pack(); thjf.setVisible(true); thjf.setDefaultCloseOperation(JFrame.DISPOSE\_ON\_CLOSE); \} \}\}); jbt.addActionListener(new ActionListener()\{ //替换按钮的监听 public void actionPerformed(ActionEvent e) \{ if (e.getSource()==jbt)\{ String value=jt1.getText(); String temp=jtf.getText(); int s=value.indexOf(temp,start); if(value.indexOf(temp,start)!=-1)\{ jt1.setSelectionStart(s); jt1.setSelectionEnd(s+temp.length()); jt1.setSelectedTextColor(Color.GREEN); start=s+1; jt1.replaceSelection(jt.getText()); \}else \{ JOptionPane.showMessageDialog(frame, "替换完毕!", "提示", 0); frame.dispose(); \} \} \}\}); jba.addActionListener(new ActionListener()\{ //全部替换按钮的监听 public void actionPerformed(ActionEvent e) \{ if (e.getSource()==jba)\{ String temp=jt1.getText(); temp=temp.replaceAll(jtf.getText(), jt.getText()); jt1.setText(temp); JOptionPane.showMessageDialog(frame, "替换完毕!", "提示", 0); frame.dispose(); \} \}\}); \} public String read()\{ //读方法 String temp=""; try\{ FileInputStream fis=new FileInputStream(f.getAbsolutePath()); byte\[\]b=new byte\[1024\]; while(true)\{ int num=fis.read(b); if(num==-1)break; temp=temp+new String(b,0,num); \} fis.close(); \} catch(Exception e1) \{ e1.printStackTrace(); \} return temp; \} public void write()\{ //写方法 try\{ FileOutputStream fos=new FileOutputStream(f); fos.write(jt1.getText().getBytes()); fos.close(); \}catch(Exception e)\{ e.printStackTrace(); \} \} \} [Java]: /images/20220731/e6679d7909a34143b7eaec50a7cd989a.png
还没有评论,来说两句吧...