Java实现简单的记事本

实现一个记事本: 这里实现的是记事本的打开与保存功能。

更多Java学习资源尽在B站账号:清风学Java
https://space.bilibili.com/591988762
只做Java分享,欢迎个位小伙伴前来观看,更多优质学习资源持续更新中…

知识提示:
JTextArea中,敲一个回车是一个\n,TextArea中敲一个回车是\r\n。

供参考学习使用:
代码实现:

import java.awt.BorderLayout;
import java.awt.FileDialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

import cn.itcast.util.FrameUtil;

public class Notepad {
	
	JFrame frame = new JFrame("记事本");
	
	//菜单条
	JMenuBar bar = new JMenuBar();
	
	//文件菜单
	JMenu fileMenu = new JMenu("文件");
	JMenu editMenu = new JMenu("编辑");
	
	JMenu switchMenu = new JMenu("切换工作目录"); //让其作为复选菜单
	
	//菜单项
	JMenuItem openItem = new JMenuItem("打开");
	JMenuItem savaItem = new JMenuItem("保存");
	
	JMenuItem aboutItem = new JMenuItem("关于");
	JMenuItem closeItem = new JMenuItem("关闭");
	
	JMenuItem workItem1 = new JMenuItem("0910project");
	JMenuItem workItem2 = new JMenuItem("1208project");
	JMenuItem workItem3 = new JMenuItem("1110project");
	
	//多行文本框
	JTextArea area = new JTextArea(20,30);
	
	public void initNotepad() {
		//菜单添加菜单项
		fileMenu.add(openItem);
		fileMenu.add(savaItem);
		
		//给打开添加事件
		openItem.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				try {
					FileDialog dialog = new FileDialog(frame,"请选择要打开的文件",FileDialog.LOAD);
					dialog.setVisible(true);
					
					//获取用户选择的路径与文件名
					String path = dialog.getDirectory();
					String fileName = dialog.getFile();
					//创建一个输出流对象
					FileInputStream inputStream = new  FileInputStream(new File(path,fileName));
					byte[] buf = new byte[1024];
					int lenth = 0;
					String data = "";
					while((lenth = inputStream.read(buf)) != -1) {
						data += new String(buf,0,lenth);
					}
					area.setText(data);
					//关闭资源
					inputStream.close();
				} catch (IOException e1){
					//e1.printStackTrace();
				}
			}
		});
		
		//给保存添加事件
		savaItem.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				try {
					FileDialog fileDialog = new FileDialog(frame,"请选择保存的路径",FileDialog.SAVE);
					fileDialog.setVisible(true);
					
					//获取用户选择的路径与文件名
					String path = fileDialog.getDirectory();
					String fileName = fileDialog.getFile();
					//创建一个输入流对象
					FileOutputStream fileOutputStream = new FileOutputStream(new File(path,fileName));
					
					//获取文本域的内容,把内容写出
					String content = area.getText();
					content = content.replaceAll("\n", "\r\n");
					fileOutputStream.write(content.getBytes());
					//关闭资源
					fileOutputStream.close();
				} catch (IOException e1) {
					e1.printStackTrace();
				}
			}
		});
		
		editMenu.add(aboutItem);
		editMenu.add(closeItem);
		
		//给关于添加一个事件监听器
		aboutItem.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				JOptionPane.showMessageDialog(frame, "这是一个简单的记事本,感谢你的使用!!", "产品介绍", JOptionPane.INFORMATION_MESSAGE);
			}
		});
		
		//给关闭添加一个事件监听器
		closeItem.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		
		//复选菜单
		switchMenu.add(workItem1);
		switchMenu.add(workItem2);
		switchMenu.add(workItem3);
		//菜单添加菜单就是复选菜单
		fileMenu.add(switchMenu);
		
		//菜单条添加菜单
		bar.add(fileMenu);
		bar.add(editMenu);
		
		//添加菜单条并设置布局
		frame.add(bar,BorderLayout.NORTH);
		//添加多行文本框
		frame.add(new JScrollPane(area));
		FrameUtil.initFrame(frame, 500, 600);
		
	}

	public static void main(String[] args) {
		new Notepad().initNotepad();
	}
}

你可能感兴趣的:(Java小程序,java)