java小程序之简单记事本

import java.awt.FileDialog;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

public class Notepad extends JFrame {
	// 定义组件
	MenuBar menubar; // 菜单栏
	Menu menu; // 菜单
	JTextArea edit_Area;
	MenuItem open_menuItem, save_menuItem, exit_menuItem; // 子菜单
	FileDialog open_fileDialog, save_fileDialog; // 弹出的保存打开框

	JScrollPane jspane; // 让文本域可以滚动的组件

	File file;

	public Notepad() {
		init();
		event();
	}

	// 设置监听
	private void event() {
		open_menuItem.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				openfile();
			}
		});

		save_menuItem.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				savefile();
			}
		});

		exit_menuItem.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
	}

	// 打开文件方法
	private void openfile() {
		open_fileDialog.setVisible(true); // 设置其显示出来

		// 获取路径和文件名
		String dirPath = open_fileDialog.getDirectory();
		String fileName = open_fileDialog.getFile();

		// 防止点击取消报错
		if (dirPath == null || fileName == null)
			return;

		edit_Area.setText(""); // 将文本区域清空

		file = new File(dirPath, fileName); // 建立文件对象

		// 按照行来读取数据,显示在文本区域
		try {
			BufferedReader br = new BufferedReader(new FileReader(file));

			String line = null;

			while ((line = br.readLine()) != null) {
				edit_Area.append(line + "\r\n");
			}

			br.close();
		} catch (IOException ex) {
			throw new RuntimeException("读取失败");
		}
	}

	// 保存文件方法
	private void savefile() {
		// 先判断文件是否存在
		if (file == null) {
			save_fileDialog.setVisible(true);

			String dirPath = save_fileDialog.getDirectory();
			String fileName = save_fileDialog.getFile();

			// 防止点击取消报错
			if (dirPath == null || fileName == null)
				return;
			// 因为文件不存在。所以需要建立file对象
			file = new File(dirPath, fileName);
		}

		// 将数据写入文件
		try {
			BufferedWriter bw = new BufferedWriter(new FileWriter(file));

			String info = edit_Area.getText(); // 得到文本区域的信息

			bw.write(info); // 写入操作
			bw.flush();
			bw.close();

		} catch (IOException e1) {

			throw new RuntimeException();
		}

	}

	// 初始化
	private void init() {
		this.setTitle("记事本");
		menubar = new MenuBar();
		menu = new Menu("菜单");

		open_menuItem = new MenuItem("打开");
		save_menuItem = new MenuItem("保存");
		exit_menuItem = new MenuItem("退出");
		edit_Area = new JTextArea();
		jspane = new JScrollPane(edit_Area);

		// 分别设置水平和垂直滚动条自动出现
		jspane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		jspane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
		// //分别设置水平和垂直滚动条总是出现
		// jspane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		// jspane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
		//
		// //分别设置水平和垂直滚动条自动出现总是隐藏
		// jspane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
		// jspane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_NEVER);

		// 添加对应组件
		this.add(jspane);
		menu.add(open_menuItem);
		menu.add(save_menuItem);
		menu.add(exit_menuItem);
		menubar.add(menu);

		// 设置窗体菜单栏 如果要添加其他菜单直接menbar.add()即可
		this.setMenuBar(menubar);

		// 设置文件可打开跟保存窗口
		open_fileDialog = new FileDialog(this, "打开", FileDialog.LOAD);
		save_fileDialog = new FileDialog(this, "保存", FileDialog.SAVE);

		this.setBounds(200, 300, 500, 400);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationRelativeTo(null); // 设置显示在中央
		this.setVisible(true);

	}

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

猜你喜欢

转载自blog.csdn.net/qq_41262903/article/details/80625334