java实现简单记事本

实验要求

能够打开文件,新建文件,保存文件,修改文件

 实现界面

 实现代码(代码顺序和上面结构体顺序一致)

package index;

public class Main {

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

}

 

package index;

import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.File;

import javax.swing.JFrame;
//给窗体设置图标
public class MyTool {
	public void setJFrameImage(JFrame jf) {
		Toolkit t1 = Toolkit.getDefaultToolkit();
		String ss = "img"+File.separator+"JFrameImage.jpg";
		Image image = t1.getImage(ss);
		jf.setIconImage(image);
	}

//窗体位置自动居中
	public void setJFrameLcotionCenter(JFrame jf) {
		int jfw = jf.getWidth();
		int jfh = jf.getHeight();
		Toolkit t1 = Toolkit.getDefaultToolkit();
		Dimension screen = t1.getScreenSize();
		int winw = screen.width;
		int winh = screen.height;
		jf.setLocation((winw-jfw)/2,(winh-jfh)/2);
	}

}

 

package index;

import java.awt.Event;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;

public class Window implements ActionListener {
	JFrame jf;
	JMenuBar bar;
	JMenu fileMenu, editMenu;
	JMenuItem newItem, openItem, saveItem, closeItem;
	ImageIcon newIcon, openIcon, saveIcon, closeIcon;
	JScrollPane scroll;
	JTextArea atea;
	JFileChooser chooser;
	File file;
	FileInputStream fis;
	FileOutputStream fos;

	public Window() {
		newWindow();

		MyTool tool = new MyTool();
		tool.setJFrameImage(jf);
		jf.setSize(1000, 800);
		tool.setJFrameLcotionCenter(jf);
		jf.setVisible(true);
	}

	public void newWindow() {
		jf = new JFrame("记事本");
		bar = new JMenuBar(); // new一个菜单条

		fileMenu = new JMenu("文件"); // 菜单栏里面的菜单
		editMenu = new JMenu("编辑");

		newIcon = new ImageIcon("img\\new.png"); // 文件菜单里的四个图标
		openIcon = new ImageIcon("img\\open.png");
		saveIcon = new ImageIcon("img\\save.png");
		closeIcon = new ImageIcon("img\\close.png");

		newItem = new JMenuItem("新建(N)", newIcon); // 文件菜单里的菜单项
		openItem = new JMenuItem("打开(O)", openIcon);
		saveItem = new JMenuItem("保存(S)", saveIcon);
		closeItem = new JMenuItem("关闭(X)", closeIcon);

		// 添加快捷键
		newItem.setMnemonic(KeyEvent.VK_N);
		newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, Event.CTRL_MASK));// Accelerator快捷键
		openItem.setMnemonic(KeyEvent.VK_O);
		openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, Event.CTRL_MASK));
		saveItem.setMnemonic(KeyEvent.VK_S);
		saveItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, Event.CTRL_MASK));
		closeItem.setMnemonic(KeyEvent.VK_X);
		closeItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, Event.CTRL_MASK));

		// 添加监听器
		newItem.addActionListener(this);
		openItem.addActionListener(this);
		saveItem.addActionListener(this);
		closeItem.addActionListener(this);

		atea = new JTextArea(); // new多行文本框
		scroll = new JScrollPane(atea); // 用构造方法在面板中加入多行文本框
		scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);// Vertical垂直
		scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);// Horizontal 水平

		chooser = new JFileChooser();// Chooser 选择器

		jf.setJMenuBar(bar);

		bar.add(fileMenu);
		bar.add(editMenu);

		fileMenu.add(newItem);
		fileMenu.add(openItem);
		fileMenu.add(saveItem);
		fileMenu.add(closeItem);

		jf.add(scroll);

	}

	// 按钮事件监听
	public void actionPerformed(ActionEvent e) {
		JMenuItem performed = (JMenuItem) e.getSource();
		if (performed == newItem) {
			new Window();
		} else if (performed == openItem) {
			chooser.showOpenDialog(null);// Dialog 会话
			file = chooser.getSelectedFile();
			try {
				fis = new FileInputStream(file);
				byte[] b = new byte[(int) file.length()];
				fis.read(b);
				atea.append(new String(b));
				fis.close();

			} catch (FileNotFoundException e1) {
				e1.printStackTrace();
			} catch (IOException e1) {
				e1.printStackTrace();
			}
		} else if (performed == saveItem) {
			chooser.showSaveDialog(null);
			chooser.setDialogTitle("另存为");
			file = chooser.getSelectedFile();
			if (!file.exists()) {
				try {
					file.createNewFile();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			}
			try {
				fos = new FileOutputStream(file);
				String text = atea.getText();
				fos.write(text.getBytes());
				fos.close();
			} catch (FileNotFoundException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		} else if (performed == closeItem) {
			System.exit(1);
		}
	}

	private StringBuffer StringBuffer(byte[] b) {
		// TODO Auto-generated method stub
		return null;
	}

}

 

 

 

 

 

 

 

 

 

 

  • 8
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值