Java编写的简易记事本例子 打开另存为文件操作

这篇文章给大家了一个简易记事本Demo。主要介绍JAVA中打开文件和另存为文件的一种做法。用到Java Swing 和 IO的内容。

开始之前先介绍两个类


javax.swing.JFileChooser --JFileChooser 为用户选择文件提供了一种简单的机制;

主要用到这个类的两个方法:int showOpenDialog(Component parent)
弹出一个 "Open File" 文件选择器对话框。返回值是你的操作状态,比如说你点了确定或者取消按钮。

  int showSaveDialog(Component parent)

弹出一个 "Open File" 文件选择器对话框


javax.swing.filechooser.FileNameExtensionFilter--一个指定文件扩展名的过滤器。可以为JFileChooser 的过滤文件类型。

它的构造方法:FileNameExtensionFilter(String description, String... extensions)
使用指定的描述和文件扩展名创建一个 FileNameExtensionFilter


  下面是例子:

        

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;
import javax.swing.filechooser.FileNameExtensionFilter;

public class NotePad extends JFrame implements ActionListener{

	/**
	 * 简易记事本程序
	 */
	public static void main(String[] args) {
		new NotePad();
	}

	JTextArea jta = null;
	JMenuBar jmb = null;
	JMenu jm = null;
	JMenuItem jmi1 = null;
	JMenuItem jmi2 = null;
	
	public NotePad(){
		jta = new JTextArea();
		this.add(jta);
		
		jmb = new JMenuBar();
		jm = new JMenu("文件");
		//这里还可以设置助记符,类似快捷键
		//jm.setMnemonic('F'); 
		
		this.setJMenuBar(jmb);
		jmb.add(jm);
		
		jmi1 = new JMenuItem("打开");
		jmi1.addActionListener(this);
		//设置ActionCommand,方便之后处理这个事件
		jmi1.setActionCommand("open");
		
		jmi2 = new JMenuItem("另存为");
		jmi2.addActionListener(this);
		jmi2.setActionCommand("save");
		
		jm.add(jmi1);
		jm.add(jmi2);
		
		this.setTitle("记事本");
		this.setSize(600, 400);
		this.setLocation(400, 300);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	
	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand().equals("open")) {

			JFileChooser chooser1 = new JFileChooser();
			FileNameExtensionFilter filter = new FileNameExtensionFilter(
					"txt文件", "txt");
			chooser1.setFileFilter(filter);
			chooser1.setDialogTitle("选择一个文件");
			//得到返回状态
			int returnVal = chooser1.showOpenDialog(null);
			chooser1.setVisible(true);
			//如果你点了“取消”按钮。则不操作
			if(returnVal == JFileChooser.CANCEL_OPTION){
				return;
			}
			
			String filepath = "";
			//得到所选文件的路径
			filepath = chooser1.getSelectedFile().getAbsolutePath();
			//文件IO操作
			FileReader fr = null;
			BufferedReader br = null;
			try {
				fr = new FileReader(filepath);
				br = new BufferedReader(fr);
				
				String s = "";
				String allCon = "";
				//一行一行的读
				while((s=br.readLine()) != null) {
					//添加换行符"\r\n"
					allCon += s + "\r\n";
				}
				//向文本框添加内容
				jta.setText(allCon);
			} catch (Exception e1) {
				e1.printStackTrace();
			} finally {
				//关闭资源
				try {
					fr.close();
					br.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
			
		} else if(e.getActionCommand().equals("save")) {
			JFileChooser chooser2 = new JFileChooser();
			chooser2.setDialogTitle("另存为");
			//注意两个方法不同
			int returnVal = chooser2.showSaveDialog(null);
			chooser2.setVisible(true);
			if(returnVal == JFileChooser.CANCEL_OPTION){
				return;
			}
			String pathname = chooser2.getSelectedFile().getAbsolutePath();
			FileWriter fw = null;
			BufferedWriter bw = null;			
			try {
				fw = new FileWriter(pathname);
				bw = new BufferedWriter(fw);
				String str = this.jta.getText();
				System.out.println(str);
				bw.write(this.jta.getText());

			} catch (Exception e1) {
				e1.printStackTrace();
			} finally {
				try {
					bw.close();
					fw.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
			
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值