SWUST--Java实验(五) 简单记事本

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.TextEvent;
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JMenu;
import javax.swing.ScrollPaneConstants;
import java.awt.Font;

public class Txt extends JFrame implements ActionListener {

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Txt frame = new Txt();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	JMenuItem newfile = new JMenuItem("\u65B0\u5EFA");
	JMenuItem open = new JMenuItem("\u6253\u5F00");
	JMenuItem save = new JMenuItem("\u4FDD\u5B58");
	JMenuItem exit = new JMenuItem("\u9000\u51FA");

	JMenuItem copy = new JMenuItem("\u590D\u5236");
	JTextArea textArea = new JTextArea();
	File sefile;
	private final JMenu mnv = new JMenu("\u67E5\u770B(V)");
	private final JMenu mnh = new JMenu("\u5E2E\u52A9(H)");
	private final JMenuItem mntmaboutEclipse = new JMenuItem("\u5173\u4E8E(About eclipse..)");

	public Txt() {
		setTitle("\u65E0\u6807\u9898 - \u8BB0\u4E8B\u672C");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 364, 432);
		getContentPane().setLayout(null);

		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		JMenu mne = new JMenu("\u7F16\u8F91(E)");
		JMenu mnf = new JMenu("\u6587\u4EF6(F)");
		menuBar.add(mnf);
		menuBar.add(mne);
		mnf.add(newfile);
		mnf.add(open);
		mnf.add(save);
		mnf.add(exit);

		mne.add(copy);

		JMenuItem paste = new JMenuItem("\u7C98\u8D34");
		mne.add(paste);

		JMenuItem z = new JMenuItem("\u526A\u5207");
		mne.add(z);

		menuBar.add(mnv);

		menuBar.add(mnh);

		mnh.add(mntmaboutEclipse);
		JScrollPane js = new JScrollPane();
		js.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		js.setBounds(0, 0, 348, 371);
		js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
		getContentPane().add(js);
		textArea.setFont(new Font("微软雅黑", Font.PLAIN, 14));

		js.setViewportView(textArea);
		textArea.setLineWrap(true); // 设置自动换行

		exit.addActionListener(this); // 加监听
		open.addActionListener(this);
		save.addActionListener(this);
		newfile.addActionListener(this);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == newfile) {
			this.setTitle("无标题 - 记事本");
			textArea.setText("");
			sefile = null; // 如果点击新建,路径置空
		} else if (e.getSource() == open) {
			JFileChooser jFileChooser = new JFileChooser();
			jFileChooser.showOpenDialog(this); // 打开文件的弹窗
			sefile = jFileChooser.getSelectedFile(); // 路径为上一步选择的路径
			try {
				// 开始读文件
				FileReader fileReader = new FileReader(sefile);
				// 设置缓存读取,优化速度
				BufferedReader bufferedReader = new BufferedReader(fileReader);
				String txt = "";
				String line = null;
				while ((line = bufferedReader.readLine()) != null) {
					txt += line + '\n';
				}
				bufferedReader.close();
				textArea.setText(txt);
			} catch (FileNotFoundException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				e1.printStackTrace();
			}

		} else if (e.getSource() == save) {
			// 如果没打开过文件
			if (sefile == null) {
				JFileChooser jFileChooser = new JFileChooser();
				jFileChooser.showSaveDialog(this);
				sefile = jFileChooser.getSelectedFile();
				// 修改文件名
				this.setTitle(sefile.getName() + "- 记事本");
			}
			try {
				// 保存
				FileWriter fileWriter = new FileWriter(sefile);
				fileWriter.write(textArea.getText());
				fileWriter.close();
			} catch (IOException e1) {

				e1.printStackTrace();
			}

		} else if (e.getSource() == exit) {
			if (textArea.getText() != null) {
				int n = JOptionPane.showConfirmDialog(null, "是否对记事本进行保存?", "另存为", JOptionPane.YES_NO_OPTION);
				if (n == JOptionPane.YES_OPTION) {
					if (sefile == null) {
						JFileChooser jFileChooser = new JFileChooser();
						jFileChooser.showSaveDialog(this);
						sefile = jFileChooser.getSelectedFile();
						// 修改文件名
						this.setTitle(sefile.getName() + "- 记事本");

					}
					try {
						// 保存
						FileWriter fileWriter = new FileWriter(sefile);
						fileWriter.write(textArea.getText()); // 往文件写多行文本框输的内容
						fileWriter.close();
					} catch (IOException e1) {

						e1.printStackTrace();
					}

				}
				System.exit(0);
			}

			else
				System.exit(0);
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值