java简易记事本开发

今天闲来没事,自己写了一个简易的记事本,需要java GUI编程,一个文本输入框JTextArea,一条菜单条JMenuBar,两个JMenu,两个JMenuItem,然后就是模仿你自己电脑自带的记事本那样大致写,模仿他的布局。利用java中的文件操作,实现记事本的功能。(因为这个记事本就是对文本的操作,自己用BufferedReader,BufferedWriter,效率高)

这里我先把代码附在这里:

package com.notepad;
/*
 * 我的记事本(功能+开发)
 */
import java.io.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class Note extends JFrame implements ActionListener{

	//创建组件
	JTextArea jta = null;
	//创建菜单条
	JMenuBar jmb = null;
	//第一个JMenue
	JMenu jm1 = null;
	//第二个JMenue
	JMenu jm2 = null;
	//定义JMenuItem(JMenue里边具体的选项)
	JMenuItem jmi1 = null;
	JMenuItem jmi2 = null;
	
	//主函数
	public static void main(String[] args) {
		Note n1 = new Note();
	}
	
	//在构造函数中完成初始化
	public Note(){
		jta = new JTextArea();
		jmb = new JMenuBar();
		jm1 = new JMenu("文件");
		jm2 = new JMenu("编辑");
		jmi1 = new JMenuItem("打开");
		jmi2 = new JMenuItem("保存");
		
		//设置JTextArea的字体
		Font mf = new Font("隶书",Font.PLAIN,20);
		jta.setFont(mf);
	
		//注册监听
		jmi1.addActionListener(this);
		jmi2.addActionListener(this);
		
		//设置监听名称
		jmi1.setActionCommand("open");
		jmi2.setActionCommand("save");
		
		//设置助记符
		jmi1.setMnemonic('F');
		jmi2.setMnemonic('S');
		
		//添加JMenuBar,并且逐级添加菜单
		this.setJMenuBar(jmb);
		jmb.add(jm1);
		jmb.add(jm2);
		jm1.add(jmi1);
		jm1.add(jmi2);
		
		//添加
		this.add(jta);
		this.setSize(800,600);
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	

	@Override
	public void actionPerformed(ActionEvent arg0) {
		
		if(arg0.getActionCommand().equals("open")){
			
			JFileChooser jfc1 = new JFileChooser();
			//设置名字
			jfc1.setDialogTitle("请选择文件...");
			//使用默认方式
			jfc1.showOpenDialog(null);
			//显示
			jfc1.setVisible(true);
			
			//得到用户选择文件的全路径
			String filename1 = jfc1.getSelectedFile().getAbsolutePath();
			//System.out.println(filename);
			
			BufferedReader br = null;
			FileReader fr = null;
			char[] buf = new char[1024];
			try{
				fr = new FileReader(filename1);
				br = new BufferedReader(fr);
				String s = "";
				String allCon = "";
				//从文件中读取信息,并显示在JTextArea控件中
				while((s=br.readLine())!=null){
					allCon = allCon + s + "\r\n";
				}
				jta.setText(allCon);
			}catch(Exception e){
				e.printStackTrace();
			}finally{
				
				try {
					//文件流一定要关闭
					br.close();
					fr.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}else if(arg0.getActionCommand().equals("save")){
			
			//出现保存对话框
			JFileChooser jfc = new JFileChooser();
			jfc.setDialogTitle("另存为...");
			//按照默认方式显示
			jfc.showSaveDialog(null);
			jfc.setVisible(true);
			
			//得到文件全路径
			String filename2 = jfc.getSelectedFile().getAbsolutePath();
			
			//准备到写入指定文件即可
			BufferedWriter bw = null;
			FileWriter fw = null;
			try{
				fw =new FileWriter(filename2);
				bw = new BufferedWriter(fw);
				bw.write(this.jta.getText());
			}catch(Exception e){
				e.printStackTrace();
			}finally{
				try {
					bw.close();
					fw.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
	}
}

我在代码里加了很多的注释,也是自己写程序的理解吧,但是自己在写的时候还是遇到问题了,在关闭文件流的时候,关闭的顺序不对会报异常,因为用到了BufferedReader
和BufferedWriter,所以还要使用FileReader和FileWriter,在关闭文件流的时候,先要关闭BufferedReader, BufferedWriter的对象,然后关闭FileReader,FileWriter的对象,否则
就会报异常Stream closed(流关闭)导致文件无法正常操作。这里我也想介绍一下JFileChooser的简单用法,这就是我们打开文件,或者保存文件显示选择的窗口,然后进行相应
的操作。因为涉及到相应的按钮点击之后响应操作,就需要添加事件监听(注意:要添加时间监听,并且设置时间监听的名称),在程序里自己还简单的设计了两个助记符,就是
打开文件,保存问价时的文件助记符(Alt+shift+字母)。
打开文件的窗口时方法showOpenDialog(null)(对象调用,默认方式),保存窗口showSaveDialog(null,默认方式)(对象调用),注意还要设置他们的可视化,就是显示出来
setVisible(true),然后相关的文件操作我自己就不在这里过多的赘述了,在程序中已经很详细的解释了。
这里是相应的截图:

自己写的,测试运行成功,希望对你有帮助。如果遇到什么问题,希望评论,一起解决。

  • 4
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值