用Java编写的一个小记事本 |
您所在的位置:网站首页 › 用java编写一个简单的记事本程序 › 用Java编写的一个小记事本 |
这是在学校做的一个小记事本,在网上看过一些记事本的代码,大多是一些比较有经验的前辈所编写的,算法比较精妙,精简。对于Java初学者来说,我有一个比较简单的思想。 要编写出一个记事本,至少需要拥有两方面的知识:1.图形用户界面(GUI)程序设计 2.文件的输入和输出 我的基本思想就是;"先把记事本的框架先做好,再逐步添加监听。" 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(); } } }
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |