`

Java的记事本 实现了记录关闭时的尺寸大小

    博客分类:
  • Java
阅读更多
第一个类:
package notepad;

import java.awt.Dimension;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

/**
 * 用于存储记事本尺寸大小的类 只是利用了文件的读写操作 对properties文件的操作
 * */
public class NotePadSize
{
	private File file;

	private Properties p;

	String w, h;

	public NotePadSize()
	{
		w = new String();
		h = new String();

		w = "400";
		h = "400";

		file = new File("G:\\3.6\\5.1\\src\\notepad\\size.properties");

		p = new Properties();

	}

	/**
	 * 从本地文件中读取上次的记事本的长宽
	 * 
	 * @throws IOException
	 * */
	protected void ReadSize() throws IOException
	{
		FileInputStream reader;
		reader = new FileInputStream(file);

		p.load(reader);

		// 读取长宽
		this.w = p.getProperty("width");
		this.h = p.getProperty("height");

		reader.close();

	}

	/**
	 * 存储记事本的长宽
	 * 
	 * @throws IOException
	 * */
	protected void SaveSize() throws IOException
	{
		FileOutputStream save;
		save = new FileOutputStream(file);
		p.setProperty("width", w);
		p.setProperty("height", h);
		p.store(save, "");
		save.close();
	}

	/**
	 * 获取长宽
	 * 
	 * @throws IOException
	 * */
	public Dimension getSize() throws IOException
	{
		ReadSize();

		Dimension size = new Dimension(Integer.parseInt(this.w),
				Integer.parseInt(this.h));
		return size;
	}

	/**
	 * 设置长宽,并保存
	 * 
	 * @throws IOException
	 * */
	public void setSize(Dimension Size) throws IOException
	{
		this.w = String.valueOf(Size.width);
		this.h = String.valueOf(Size.height);

		SaveSize();

	}

}


第二个类:
package notepad;

import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

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

/**
 * 记事本beta 1.1.0版本 最新功能:实现了记事本的尺寸记录功能
 * */

@SuppressWarnings("serial")
public class NotePad extends JFrame implements WindowListener
{
	private JScrollPane txtJs;

	private JTextArea txtArea;

	private JMenuBar jm;

	private JMenu file, edit, format, help;

	private JMenuItem file_new, file_open, file_save, exit;

	private JMenuItem edit_cut, edit_copy, edit_paste, edit_find,
			edit_selectAll;

	private JCheckBoxMenuItem format_wrap;

	private JMenuItem help_issue;

	private JPopupMenu jpm;
	private JMenuItem jp_cut, jp_copy, jp_paste, jp_selectAll;

	private FileDialog openFileDialog, saveFileDialog;

	private NotePadSize size;

	private Dimension NotePadDimension;

	public NotePad() throws IOException
	{

		super("NotePad");

		jm = new JMenuBar();

		file = new JMenu("文件(F)");
		edit = new JMenu("编辑(E)");
		format = new JMenu("格式(O)");
		help = new JMenu("帮助(H)");

		// 文件菜单的实例化
		file_new = new JMenuItem("新建(N)");
		file_open = new JMenuItem("打开(O)");
		file_save = new JMenuItem("保存(S)");
		exit = new JMenuItem("退出(X)");
		file.add(file_new);
		file.add(file_open);
		file.add(file_save);
		file.addSeparator();
		file.add(exit);

		// 编辑菜单的实例化
		edit_cut = new JMenuItem("剪切");
		edit_copy = new JMenuItem("复制");
		edit_paste = new JMenuItem("粘贴");
		edit_find = new JMenuItem("查找");
		edit_selectAll = new JMenuItem("全选");
		edit.add(edit_cut);
		edit.add(edit_copy);
		edit.add(edit_paste);
		edit.addSeparator();
		edit.add(edit_find);
		edit.addSeparator();
		edit.add(edit_selectAll);

		// 格式菜单的实例化
		format_wrap = new JCheckBoxMenuItem("自动换行");
		format.add(format_wrap);

		// 帮助菜单的实例化
		help_issue = new JMenuItem("关于记事本");
		help.add(help_issue);

		// 添加添加右键弹出式菜单
		jpm = new JPopupMenu();
		jp_cut = new JMenuItem("剪切");
		jp_copy = new JMenuItem("复制");
		jp_paste = new JMenuItem("粘贴");
		jp_selectAll = new JMenuItem("全选");
		jpm.add(jp_cut);
		jpm.add(jp_copy);
		jpm.add(jp_paste);
		jpm.addSeparator();
		jpm.add(jp_selectAll);

		// 注册组件监听
		file_new.addActionListener(new NotePadActionListener());
		file_open.addActionListener(new NotePadActionListener());
		file_save.addActionListener(new NotePadActionListener());
		exit.addActionListener(new NotePadActionListener());
		edit_cut.addActionListener(new NotePadActionListener());
		edit_copy.addActionListener(new NotePadActionListener());
		edit_paste.addActionListener(new NotePadActionListener());
		edit_find.addActionListener(new NotePadActionListener());
		edit_selectAll.addActionListener(new NotePadActionListener());
		format_wrap.addActionListener(new NotePadActionListener());
		help_issue.addActionListener(new NotePadActionListener());
		jp_cut.addActionListener(new NotePadActionListener());
		jp_copy.addActionListener(new NotePadActionListener());
		jp_paste.addActionListener(new NotePadActionListener());
		jp_selectAll.addActionListener(new NotePadActionListener());

		// 实例化对话框
		openFileDialog = new FileDialog(this, "打开文件", FileDialog.LOAD);
		saveFileDialog = new FileDialog(this, "保存文件", FileDialog.SAVE);

		jm.add(file);
		jm.add(edit);
		jm.add(format);
		jm.add(help);

		setJMenuBar(jm);
		txtArea = new JTextArea();
		// 使用匿名内部内,为textArea添加鼠标监听
		txtArea.addMouseListener(new MouseAdapter()
		{

			public void mouseClicked(MouseEvent e)
			{
				if (e.getButton() == MouseEvent.BUTTON3)
				{
					jpm.show(e.getComponent(), e.getX(), e.getY());
				}
			}
		});
		txtJs = new JScrollPane(txtArea);
		add(txtJs);

		size = new NotePadSize();

		// 添加窗口事件,记录窗口的大小尺寸
		addWindowListener(this);

		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		NotePadDimension = new Dimension(size.getSize());
		setSize(NotePadDimension);
		// 让窗体居中显示
		setLocation(getToolkit().getScreenSize().width / 2
				- NotePadDimension.width / 2,
				getToolkit().getScreenSize().height / 2
						- NotePadDimension.height / 2);

		setVisible(true);
	}

	// ///////Main method////////////
	public static void main(String[] args) throws IOException
	{
		new NotePad();
	}

	// /////内部类,用于处理事件//////////
	class NotePadActionListener implements ActionListener
	{
		public void actionPerformed(ActionEvent e)
		{
			Object o = e.getSource();
			if (o == file_new)
			{ // 新建文件
				txtArea.setText("");
			}
			if (o == file_open)
			{// 打开文件
				openFileDialog.setVisible(true);
				String name = openFileDialog.getDirectory()
						+ openFileDialog.getFile();
				OpenFile(name);
			}

			if (o == file_save)
			{// 保存文件
				saveFileDialog.setVisible(true);
				String name = saveFileDialog.getDirectory()
						+ saveFileDialog.getFile();

				SaveFile(name);
			}
			if (o == exit)
			{// 退出
				System.exit(0);
			}
			if (o == help_issue)
			{// 帮助
				JOptionPane.showMessageDialog(txtArea,
						"关于记事本:\n仅供学习参考 NotePad Beta 1.1");
			}

			// //////////编辑事件/////////////
			if (o == edit_cut || o == jp_cut)
			{
				txtArea.cut();
			}
			if (o == edit_copy || o == jp_copy)
			{
				txtArea.copy();
			}
			if (o == edit_paste || o == jp_paste)
			{
				txtArea.paste();
			}
			if (o == edit_selectAll || o == jp_selectAll)
			{
				txtArea.selectAll();
			}
			// ///////////end edit event////////////
			if (o == edit_find)
			{
				// 从输入对话框中获取需要查询的内容
				String findStr = JOptionPane.showInputDialog(txtArea,
						"输入查询的内容", "查找", JOptionPane.QUESTION_MESSAGE);
				Find(findStr);

			}
			if (o == format_wrap)
			{// 自动换行
				if (format_wrap.isSelected())
				{
					txtArea.setLineWrap(true);
				}
				else
					txtArea.setLineWrap(false);
			}
		}

		public void Find(String s)
		{
			int x;
			String txt = txtArea.getText();
			x = txt.indexOf(s);
			if (x != -1)
				txtArea.select(x, x + s.length());
			else
				JOptionPane.showMessageDialog(txtArea, "查找失败", "没有找到",
						JOptionPane.WARNING_MESSAGE);
		}

		public void OpenFile(String fileName)
		{// 读取文件 使用了reader方法
			File file = new File(fileName);
			try
			{
				FileReader reader = new FileReader(file);
				BufferedReader br = new BufferedReader(reader);
				String s = new String();
				try
				{
					while ((s = br.readLine()) != null)
					{
						txtArea.append(s + "\n");
					}
					br.close();
					reader.close();
				}
				catch (IOException e)
				{
					e.printStackTrace();
				}
			}
			catch (FileNotFoundException e)
			{
				e.printStackTrace();
			}
		}

		// 保存文件
		public void SaveFile(String fileName)
		{
			File file = new File(fileName);
			try
			{
				FileWriter save = new FileWriter(file);
				save.write(txtArea.getText());
				save.close();
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}

	/**
	 * 实现WindowListenner接口,当关闭窗口的时候获取窗口大小,
	 * 然后调用NotePadSize类的setSize方法用properties文件保存最后尺寸
	 * */
	public void windowClosing(WindowEvent e)
	{
		NotePadDimension = this.getSize();

		try
		{
			size.setSize(NotePadDimension);
		}
		catch (IOException e1)
		{
			e1.printStackTrace();
		}
	}

	public void windowOpened(WindowEvent e)
	{
	}

	public void windowClosed(WindowEvent e)
	{
	}

	public void windowIconified(WindowEvent e)
	{
	}

	public void windowDeiconified(WindowEvent e)
	{
	}

	public void windowActivated(WindowEvent e)
	{
	}

	public void windowDeactivated(WindowEvent e)
	{
	}

}


当然还有个properties文件
#
#Tue May 03 21:01:46 CST 2011
height=311
width=317
分享到:
评论

相关推荐

    java 实现简单的记事本程序

    通过以上知识点的学习和实践,你可以创建一个基本的Java记事本程序。这个过程将帮助你深入理解Java GUI编程,并为更复杂的桌面应用开发打下基础。记得在编写代码时,保持良好的编程习惯,如适当的注释、变量命名清晰...

    java多功能记事本

    ### Java多功能记事本知识点解析 #### 一、项目概述 该项目名为“Java多功能记事本”,是一款基于Java语言开发的增强型文本编辑工具。相较于传统简易记事本,此应用具备更多的实用功能,旨在为用户提供更为丰富的...

    java记事本

    Java记事本是一款基于Java语言开发的简单文本编辑器,它提供了一个基本的文本操作环境,使得用户可以在其中进行文字的录入、修改和保存。这款记事本程序体现了Java编程语言在开发桌面应用上的能力,同时也展示了面向...

    日历记事本java编程

    ### 日历记事本Java编程知识点详解 #### 一、项目概述 ...以上是对“日历记事本Java编程”项目的深度解析,从技术架构到功能实现,再到可能的优化方向,旨在帮助开发者全面理解此类应用程序的开发流程和技术要点。

    Java记事本程序源代码

    ### Java记事本程序源代码解析 #### 一、概览 给定的代码段是用Java语言编写的简易记事本程序的一部分。这个程序利用了AWT(Abstract Window Toolkit)组件来构建用户界面,提供了基本的文件操作功能,如打开、保存...

    java课程设计报告之记事本程序设计报告

    在这个项目中,我们的目标是设计并实现一个简单的Java记事本程序,提供基本的文字编辑功能,如新建、打开、保存、复制、粘贴、剪切、撤销、重做等。通过这个项目,学生可以深入理解Java Swing库在图形用户界面(GUI...

    JAVA课程设计报告记事本含代码.doc

    【Java课程设计报告:记事本程序开发】 在本次Java课程设计中,学生们被要求开发一个简单的记事本应用程序,以此来巩固和实践所学的Java编程知识。这份报告详细记录了开发过程,包括背景、设计思路、系统需求分析...

    Java图形界面开发之简易记事本

    同时,还设置了JFrame的大小、关闭操作(默认为退出程序)以及可见性。 事件处理是通过`event()`函数完成的,这里使用了`ActionListener`接口来监听MenuItem的点击事件。当用户点击"打开"(openItem)或"保存"...

    src_JAVA源码_

    JAVA实训作品 这是一个界面简单的java记事本,界面友好,能快捷简单地进行操作,可即时记录身边的事,可把它当做标签使用,充分用到日常生活工作中的记事,方便、简洁。可进行文件的打开、保存、另存为和关闭;可...

    JAVA课程设计报告记事本程序.doc

    总结,本报告详细记录了基于Java语言的简单记事本程序的设计过程,从需求分析到详细设计,再到测试优化,每个阶段都遵循了良好的软件工程实践,旨在提升学生的编程技能和软件开发能力。通过这样的课程设计,学生可以...

    JAVA课程设计-编写一个记事本程序.pdf

    通过以上步骤,我们可以实现一个基础的Java记事本程序,提供基本的文本编辑功能,同时也加深了对Java GUI编程的理解。在实际开发中,还可以进一步完善,比如增加撤销/重做功能,支持多种格式的文件,或者提供更复杂...

    JAVA上百实例源码以及开源项目源代码

    Java实现的FTP连接与数据浏览程序 1个目标文件 摘要:Java源码,网络相关,FTP Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。 部分源代码摘录: ftpClient = new FtpClient(); //实例化FtpClient对象 ...

    Java记事本源代码(完整).doc

    通过以上知识点,我们可以看到这个Java记事本实现了基本的文字编辑功能,包括新建、打开、保存文件,以及文本的剪切、复制、粘贴、查找和替换。此外,它还提供了字体设置和自动换行选项。这个程序是一个很好的学习...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    书名:《Java开发实战1200例(第I卷)》(清华大学出版社.李钟尉,陈丹丹) PDF格式扫描版,全书分为24章,共817页。2011年1月出版。 全书压缩打包成4部分,这是第3部分 注:本系列图书的第I、II卷再版时均相应改名为...

    基于-Android日历记事功能实现.doc

    通过Java代码或XML布局,设置控件样式,如字体、颜色和大小,以符合应用的视觉设计。 3.3 核心技术 - `ContentResolver`:用于与系统日历提供者进行交互,获取和修改日历数据。 - `AlarmManager`:如果需要,可以...

    2021-2022计算机二级等级考试试题及答案No.1800.docx

    2. ResultSet 接口是Java数据库连接(JDBC)的一部分,提供了遍历数据库查询结果集的方法,如next()用于移动到下一个结果,close()用于关闭结果集。 3. 互联网服务提供商(ISP)是指提供互联网接入服务的公司,如...

Global site tag (gtag.js) - Google Analytics