zoukankan      html  css  js  c++  java
  • Java学习笔记——实现一个简易记事本Notepad的编写

    记事本功能介绍

    1.   新建:记事本清空。
    2.   打开:可打开笔记本上任意文本文件。
    3.   保存:将文件保存至当前文件夹。
    4.   另存为:将文件保存至任意位置。
    5.   退出:退出时确认退出前是否保存内容。
    【注:“保存”和“另存为”时,应指明文件的后缀,如:XXX.txt】

    记事本图例


    打开笔记本上任意文本文件

    该操作需要用到  FileDialog 类 中的 FileDialog.LOAD);
    		FileDialog fd = new FileDialog(this, "打开", FileDialog.LOAD);
    		fd.setVisible(true);
    值得注意的是,在获取文件路径时,相关操作为:
    String strFile = fd.getDirectory() + fd.getFile();
    若没有 fd.getDirectory()  则只能打开当前文件夹。fd.getDirectory()  相当于取得文件的绝对路径前缀。
    取得路径后,就可以将文件打开并写到文本框中。
    具体操作见博客:

    代码举例
    	private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
    		// TODO add your handling code here:
    		FileDialog fd = new FileDialog(this, "打开", FileDialog.LOAD);
    		fd.setVisible(true);
    		String strFile = fd.getDirectory() + fd.getFile();
    		if (strFile != null) {
    			try {
    				FileInputStream fis = new FileInputStream(strFile);
    				byte[] buf = new byte[10 * 1024];
    				int len = fis.read(buf);
    				jTextArea1.append(new String(buf, 0, len));
    				fis.close();
    			} catch (Exception e) {
    				System.out.println("打开失败");
    			}
    		}
    	}

    打开图例:


    将文件保存至任意位置

    实际上,与上述操作相仿。只不过,是一个读一个写。
    取得文件路径和内容后,相关操作就容易很多了。

    代码举例:
    	private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {
    		// TODO add your handling code here:
    			FileDialog fd = new FileDialog(this, "另存为", FileDialog.SAVE);
    			fd.setVisible(true);
    			String string1 = jTextArea1.getText();
    			String stringfile = fd.getDirectory()+fd.getFile();
    			BufferedWriter bWriter = null;
    			try {
    				bWriter = new BufferedWriter(new FileWriter(stringfile));
    				bWriter.write(string1); 
    				bWriter.close(); 
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				System.out.println("保存失败");
    			} 
    	}

    另存为图例


    记事本 NotePad  代码

    /*
     * Test_Notepad.java
     *
     * Created on __DATE__, __TIME__
     */
    
    //package com.test;
    
    import java.awt.*;
    import java.io.*;
    
    import javax.swing.JOptionPane;
    
    /**
     *
     * @author  __USER__
     */
    public class Test_Notepad extends javax.swing.JFrame {
    
    	/** Creates new form Test_Notepad */
    	public Test_Notepad(String name) {
    		super(name);
    		initComponents();
    		setLocation(450, 200);
    	}
    
    	/** This method is called from within the constructor to
    	 * initialize the form.
    	 * WARNING: Do NOT modify this code. The content of this method is
    	 * always regenerated by the Form Editor.
    	 */
    	//GEN-BEGIN:initComponents
    	// <editor-fold defaultstate="collapsed" desc="Generated Code">
    	private void initComponents() {
    
    		jScrollPane1 = new javax.swing.JScrollPane();
    		jTextArea1 = new javax.swing.JTextArea();
    		jMenuBar1 = new javax.swing.JMenuBar();
    		jMenu1 = new javax.swing.JMenu();
    		jMenuItem1 = new javax.swing.JMenuItem();
    		jMenuItem2 = new javax.swing.JMenuItem();
    		jMenuItem3 = new javax.swing.JMenuItem();
    		jMenuItem4 = new javax.swing.JMenuItem();
    		jSeparator1 = new javax.swing.JSeparator();
    		jSeparator2 = new javax.swing.JSeparator();
    		jMenuItem6 = new javax.swing.JMenuItem();
    		jMenu2 = new javax.swing.JMenu();
    		jMenuItem7 = new javax.swing.JMenuItem();
    		jMenuItem8 = new javax.swing.JMenuItem();
    		jMenuItem9 = new javax.swing.JMenuItem();
    		jMenuItem10 = new javax.swing.JMenuItem();
    		jMenuItem11 = new javax.swing.JMenuItem();
    
    		setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    
    		jTextArea1.setColumns(20);
    		jTextArea1.setRows(5);
    		jScrollPane1.setViewportView(jTextArea1);
    
    		jMenu1.setText("u6587u4ef6");
    		jMenu1.setMinimumSize(new java.awt.Dimension(35, 19));
    
    		jMenuItem1.setText("u65b0u5efa");
    		jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem1ActionPerformed(evt);
    			}
    		});
    		jMenu1.add(jMenuItem1);
    
    		jMenuItem2.setText("u6253u5f00");
    		jMenuItem2.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem2ActionPerformed(evt);
    			}
    		});
    		jMenu1.add(jMenuItem2);
    
    		jMenuItem3.setText("u4fddu5b58");
    		jMenuItem3.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem3ActionPerformed(evt);
    			}
    		});
    		jMenu1.add(jMenuItem3);
    
    		jMenuItem4.setText("u53e6u5b58u4e3a");
    		jMenuItem4.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem4ActionPerformed(evt);
    			}
    		});
    		jMenu1.add(jMenuItem4);
    		jMenu1.add(jSeparator1);
    		jMenu1.add(jSeparator2);
    
    		jMenuItem6.setText("u9000u51fa");
    		jMenuItem6.addActionListener(new java.awt.event.ActionListener() {
    			public void actionPerformed(java.awt.event.ActionEvent evt) {
    				jMenuItem6ActionPerformed(evt);
    			}
    		});
    		jMenu1.add(jMenuItem6);
    
    		jMenuBar1.add(jMenu1);
    
    		jMenu2.setText("u7f16u8f91");
    
    		jMenuItem7.setText("u64a4u9500");
    		jMenu2.add(jMenuItem7);
    
    		jMenuItem8.setText("u526au5207");
    		jMenu2.add(jMenuItem8);
    
    		jMenuItem9.setText("u590du5236");
    		jMenu2.add(jMenuItem9);
    
    		jMenuItem10.setText("u7c98u8d34");
    		jMenu2.add(jMenuItem10);
    
    		jMenuItem11.setText("u5220u9664");
    		jMenu2.add(jMenuItem11);
    
    		jMenuBar1.add(jMenu2);
    
    		setJMenuBar(jMenuBar1);
    
    		javax.swing.GroupLayout layout = new javax.swing.GroupLayout(
    				getContentPane());
    		getContentPane().setLayout(layout);
    		layout.setHorizontalGroup(layout.createParallelGroup(
    				javax.swing.GroupLayout.Alignment.LEADING).addComponent(
    				jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400,
    				Short.MAX_VALUE));
    		layout.setVerticalGroup(layout.createParallelGroup(
    				javax.swing.GroupLayout.Alignment.LEADING).addComponent(
    				jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 279,
    				Short.MAX_VALUE));
    
    		pack();
    	}// </editor-fold>
    	//GEN-END:initComponents
    
    	private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
    		// TODO add your handling code here:
    		jTextArea1.setText(null);
    	}
    
    	private void jMenuItem4ActionPerformed(java.awt.event.ActionEvent evt) {
    		// TODO add your handling code here:
    			FileDialog fd = new FileDialog(this, "另存为", FileDialog.SAVE);
    			fd.setVisible(true);
    			String string1 = jTextArea1.getText();
    			String stringfile = fd.getDirectory()+fd.getFile();
    			BufferedWriter bWriter = null;
    			try {
    				bWriter = new BufferedWriter(new FileWriter(stringfile));
    				bWriter.write(string1); 
    				bWriter.close(); 
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				System.out.println("保存失败");
    			} 
    	}
    
    	private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {
    		// TODO add your handling code here:
    		String FileName = JOptionPane.showInputDialog("请输入保存的文件名:");
    		String string1 = jTextArea1.getText();
    		if (FileName != null) {
    			BufferedWriter bWriter = null;
    			try {
    				bWriter = new BufferedWriter(new FileWriter(new File(FileName)));
    				bWriter.write(string1);
    				bWriter.close();
    			} catch (Exception e) {
    				System.out.println("保存失败");
    			}
    		}
    	}
    
    	private void jMenuItem6ActionPerformed(java.awt.event.ActionEvent evt) {
    		// TODO add your handling code here:
    		int result = JOptionPane.showConfirmDialog(null, "退出前是否保存?");
    		if (result == JOptionPane.YES_OPTION) {
    			String FileName = JOptionPane.showInputDialog("请输入保存的文件名:");
    			String string1 = jTextArea1.getText();
    			if (FileName != null) {
    				BufferedWriter bWriter = null;
    				try {
    					bWriter = new BufferedWriter(new FileWriter(new File(
    							FileName)));
    					bWriter.write(string1);
    					bWriter.close();
    				} catch (Exception e) {
    					System.out.println("保存失败");
    				}
    			}
    			System.exit(0);
    		} else if (result == JOptionPane.NO_OPTION) {
    			System.exit(0);
    		}
    	}
    
    	private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
    		// TODO add your handling code here:
    		FileDialog fd = new FileDialog(this, "打开", FileDialog.LOAD);
    		fd.setVisible(true);
    		String strFile = fd.getDirectory() + fd.getFile();
    		if (strFile != null) {
    			try {
    				FileInputStream fis = new FileInputStream(strFile);
    				byte[] buf = new byte[10 * 1024];
    				int len = fis.read(buf);
    				jTextArea1.append(new String(buf, 0, len));
    				fis.close();
    			} catch (Exception e) {
    				System.out.println("打开失败");
    			}
    		}
    	}
    
    	public void SaveNotepad() {
    		String FileName = JOptionPane.showInputDialog("请输入保存的文件名:");
    		String string1 = jTextArea1.getText();
    		if (FileName != null) {
    			BufferedWriter bWriter = null;
    			try {
    				bWriter = new BufferedWriter(new FileWriter(new File(FileName)));
    				bWriter.write(string1);
    				bWriter.close();
    				//				Thread.sleep(1000);
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    	}
    
    	/**
    	 * @param args the command line arguments
    	 */
    	public static void main(String args[]) {
    		java.awt.EventQueue.invokeLater(new Runnable() {
    			public void run() {
    				Test_Notepad notepad = new Test_Notepad("决Jue的记事本");
    				notepad.setVisible(true);
    			}
    		});
    	}
    
    	//GEN-BEGIN:variables
    	// Variables declaration - do not modify
    	private javax.swing.JMenu jMenu1;
    	private javax.swing.JMenu jMenu2;
    	private javax.swing.JMenuBar jMenuBar1;
    	private javax.swing.JMenuItem jMenuItem1;
    	private javax.swing.JMenuItem jMenuItem10;
    	private javax.swing.JMenuItem jMenuItem11;
    	private javax.swing.JMenuItem jMenuItem2;
    	private javax.swing.JMenuItem jMenuItem3;
    	private javax.swing.JMenuItem jMenuItem4;
    	private javax.swing.JMenuItem jMenuItem6;
    	private javax.swing.JMenuItem jMenuItem7;
    	private javax.swing.JMenuItem jMenuItem8;
    	private javax.swing.JMenuItem jMenuItem9;
    	private javax.swing.JScrollPane jScrollPane1;
    	private javax.swing.JSeparator jSeparator1;
    	private javax.swing.JSeparator jSeparator2;
    	private javax.swing.JTextArea jTextArea1;
    	// End of variables declaration//GEN-END:variables
    
    }


  • 相关阅读:
    吊打996,来了?!
    微软开源浏览器自动化工具Playwright for Python(附源码)
    从0到1开始建设安全测试体系
    网友爆料vivo将取消大小周,不降薪,官方证实消息属实
    认识了一个在华为任职的50岁程序员!
    漫画:什么是自动驾驶?
    中国十大杰出人物
    最难调试修复的 bug 是怎样的?
    “十年不升职多得是,四年算什么”
    appium+pytest实现APP并发测试
  • 原文地址:https://www.cnblogs.com/aukle/p/3214903.html
Copyright © 2011-2022 走看看