JavaSE基础(65) GUI实现一个简单的记事本

目前实现功能:文件的打开、保存、另存为、替换、退出   以及几个简单的菜单选项

JavaSE基础(65) GUI实现一个简单的记事本_第1张图片

JavaSE基础(65) GUI实现一个简单的记事本_第2张图片

JavaSE基础(65) GUI实现一个简单的记事本_第3张图片

/**
 * 我的记事本
 * 目前实现功能:文件的打开、保存、另存为、替换、退出   以及几个简单的菜单选项
 * @author 郑清
 */
public class NotepadDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new MyNotepad();
	}

}

class MyNotepad {

	static TextArea textArea;
	
	public MyNotepad() {
		init();
	}

	// 初始化
	private void init() {
		JFrame frame = new JFrame("我的记事本");// 创建一个带标题的窗口对象frame
		frame.setVisible(true);// 显示窗口
		frame.setSize(600, 400);// 设置窗口大小
		frame.setLocationRelativeTo(null);// 设置窗口居中
		frame.setDefaultCloseOperation(3);// 点击X关闭程序 3为结束程序

		// 给窗口添加菜单栏
		addMenuBarToFrame(frame);
		// 给窗口添加文本域
		addTextAreaToFrame(frame);
	}

	/**
	 * 给窗口添加文本域对象
	 * @param frame
	 */
	private void addTextAreaToFrame(JFrame frame) {
		textArea = new TextArea();// 创建文本域对象
		frame.add(textArea);// 将文本域添加到窗口上
	}

	/**
	 * 创建菜单栏添加到指定的窗口对象上
	 * @param frame
	 */
	private void addMenuBarToFrame(JFrame frame) {
		MenuBar menuBar = new MenuBar();// 创建菜单栏对象

		Menu file = new Menu("文件(F)");// 创建文件(F)菜单
		Menu edit = new Menu("编辑(E)");// 创建编辑(E)菜单
		Menu format = new Menu("格式(O)");// 创建格式(O)菜单
		Menu view = new Menu("查看(V)");// 创建查看(V)菜单
		Menu help = new Menu("帮助(H)");// 创建帮助(H)菜单

		// file中菜单选项
		MenuItem newNotepad = new MenuItem("新建(N)...		 Ctrl+N");// 创建 新建 菜单选项
		MenuItem open = new MenuItem("打开(O)...			Ctrl+O");// 创建 打开 菜单选项
		MenuItem save = new MenuItem("保存(S)		Ctrl+S");// 创建 保存 菜单选项
		MenuItem saveAs = new MenuItem("另存为(A)...		");// 创建 另存为 菜单选项
		MenuItem pageSetup = new MenuItem("页面设置(U)...		");// 创建 页面设置 菜单选项
		MenuItem print = new MenuItem("打印(p)...		Ctrl+P");// 创建 打印 菜单选项
		MenuItem exit = new MenuItem("退出(X)");// 创建 退出 菜单选项
		MenuItem replace = new MenuItem("替换");

		file.add(newNotepad);// 将newNotepad菜单选项 添加到 file 菜单上
		file.add(open);// 将open菜单选项 添加到 file 菜单上
		file.add(save);// 将save菜单选项 添加到 file 菜单上
		file.add(saveAs);// 将saveAs菜单选项 添加到 file 菜单上
		file.add(pageSetup);// 将pageSetup菜单选项 添加到 file 菜单上
		file.add(print);// 将print菜单选项 添加到 file 菜单上
		file.add(exit);// 将exit菜单选项 添加到 file 菜单上
		file.add(replace);

		addListenerToOpen(open, frame);// 一个给open菜单选项添加监听器的方法
		addListenerToExit(exit);// 一个给exit菜单选项添加监听器的方法
		replace.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				String regex = "[a-zA-Z]";
				textArea.setText(textArea.getText().replaceAll(regex, "*"));//替换所有字母为*
			}
		});

		// edit中菜单选项
		MenuItem revoke = new MenuItem("撤销(U)		Ctrl+Z");
		MenuItem cut = new MenuItem("剪切(T)		Ctrl+X");
		MenuItem copy = new MenuItem("复制(C)		Ctrl+C");
		MenuItem paste = new MenuItem("粘贴(P)		Ctrl+V");
		MenuItem delete = new MenuItem("删除(L)		Del");
		MenuItem find = new MenuItem("查找(F)		Ctrl+F");

		edit.add(revoke);
		edit.add(cut);
		edit.add(copy);
		edit.add(paste);
		edit.add(delete);
		edit.add(find);

		menuBar.add(file); // 将file菜单添加到菜单栏
		menuBar.add(edit); // 将edit菜单添加到菜单栏
		menuBar.add(format);// 将format菜单添加到菜单栏
		menuBar.add(view); // 将view菜单添加到菜单栏
		menuBar.add(help); // 将help菜单添加到菜单栏

		frame.setMenuBar(menuBar);// 将菜单栏对象menuBar添加到窗口上
	}

	/**
	 * 给open打开 菜单选项添加监听器
	 * @param open
	 */
	private void addListenerToOpen(MenuItem open, JFrame frame) {
		MyOpenActionListener myOpenActionListener = new MyOpenActionListener(frame);// 创建一个myOpenActionListener按钮监听事件
		open.addActionListener(myOpenActionListener);// 给open菜单选项添加监听事件
	}

	/**
	 * 给exit退出 菜单选项添加监听器
	 * 
	 * @param exit
	 */
	private void addListenerToExit(MenuItem exit) {
		// TODO Auto-generated method stub
		MyExitActionListener myExitActionListener = new MyExitActionListener();
		exit.addActionListener(myExitActionListener);
	}

}

/**
 * MyOpenActionListener:文件菜单选项中的打开 监听事件
 * @author 郑清
 */
class MyOpenActionListener implements ActionListener {

	private JFrame frame;

	public MyOpenActionListener(JFrame frame) {
		super();
		this.frame = frame;
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		//FileDialog fileDialog = new FileDialog(frame, "我的记事本", 1);//保存功能   在frame的基础上创建一个文件选中框对象
		 FileDialog fileDialog = new FileDialog(frame);//打开功能  在frame的基础上创建一个文件选中框对象
		fileDialog.setVisible(true);//显示文件选择框
		
		String directory = fileDialog.getDirectory();//获取目录路径
		String file = fileDialog.getFile();//获取文件路径
		if(directory==null || file==null ||!new File(directory+file).exists()) {
			return;
		}
		String path = directory + file;//得到绝对路径
		try {
			FileInputStream fis = new FileInputStream(path);//创建输入流对象fis 选择需要打开文件的路径
			byte[] b = new byte[1024];
			//int read = fis.read(b);
			int read;
			while((read = fis.read(b)) != -1) { //IO流读取数据
				String string = new String(b,0,read); //转换成字符串
				MyNotepad.textArea.append(string); //拼接每一次得到的字符串
			}
		} catch (FileNotFoundException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		
	}

}

/**
 * MyExitActionListener:文件菜单选项中的退出 监听事件
 * @author 郑清
 */
class MyExitActionListener implements ActionListener {

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		System.exit(0);// 强制退出JVM虚拟机
	}

}

 

你可能感兴趣的:(-----❶,JavaSE基础)