`
cq520
  • 浏览: 166451 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

记事本的制作

阅读更多

     技术点不多,主要涉及一些IO类的使用与GUI的用法,为大家提供一个简单的模板,更多的功能当然是留给大家自己来思考,代码可以自己拷过去运行一下,打开文件与另存为方法请填入绝对路径下的文件名,点击保存会直接保存到D盘,还可以设置字体,代码如下:

面板类:

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;

@SuppressWarnings("serial")
public class NotePad extends JFrame{
	JTextArea textArea=new JTextArea();
	public static void main(String args[]){
		NotePad tf=new NotePad();
		tf.showframe();
	}
	public void showframe(){
		//创建一个菜单选项
		JMenuBar menubar=initMenu();
		//给输入框添加滚动条
		JScrollPane scroll=new JScrollPane(textArea);
		//设置滚动条的大小为窗口的大小
		scroll.setPreferredSize(this.getSize());
		//设置滚动条的出现方式为自动出现
		scroll.setAutoscrolls(true);
		//设置垂直的滚动条总是显示
		scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		//设置横向的滚动条总是显示
		scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
		//字体说明:0常规,1粗体,2斜体,3倾斜加粗
		this.setJMenuBar(menubar);
		this.add(scroll);
		this.setTitle("我的记事本");
		this.setSize(600,400);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);
		this.setVisible(true);
	}
	//实例化一个菜单
	public JMenuBar initMenu(){
		JMenuBar menubar=new JMenuBar();
		//主选项
		String menu1[]=new String[]{"文件","编辑","格式","查看","帮助"};
		//扩展选项
		String me1[][]=new String[][]{{"打开(O)    Ctrl+O","保存(S)    Ctrl+S","另存为(A)    Ctrl+A",
			"页面设置(U)","打印(P)","退出(E)"},{"撤销(Z)    Ctrl+Z","剪切(X)    Ctrl+X",
				"复制(C)    Ctrl+C","粘贴(V)    Ctrl+V","删除(D)    Ctrl+D","查找(F)    Ctrl+F",
				"替换(R)    Ctrl+R"},{"自动换行","字体"},{"状态栏"},
				{"查看帮助","关于记事本"}};
		Font font=new Font("楷体",1,16);
		for(int i=0;i<menu1.length;i++){
			//实例化菜单选项并添加到菜单上
			JMenu menu=new JMenu(menu1[i]);
			menu.setFont(font);
			//实例化子菜单选项
			for(int j=0;j<me1[i].length;j++){
				//添加子菜单选项
				JMenuItem me=new JMenuItem(me1[i][j]);
				me.setFont(font);
				//将子菜单添加到主菜单上面
				menu.add(me);
				//给子菜单项添加监听器
				MenuListener mlis=new MenuListener(new openFrame(),new fontFrame(),new saveFrame(),this);
				//设置按钮响应
				me.setActionCommand(me1[i][j]);
				me.addActionListener(mlis);
			}
			//将菜单添加到菜单条上面
			menubar.add(menu);
		}
		return menubar;
	}
	/**
	 * 打开文件的界面
	 */
	class openFrame {
		public void showFrame(){
			final JFrame frame=new JFrame();
			JLabel file_la=new JLabel("文件名");
			final JTextField file_jf=new JTextField(15);
			JButton sure=new JButton("确定");
			frame.setLayout(new FlowLayout());
			frame.add(file_la);
			frame.add(file_jf);
			frame.add(sure);
			frame.setSize(240,120);
			frame.setLocationRelativeTo(null);
			frame.setTitle("请输入文件名");
			frame.setVisible(true);
			sure.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e){
					//打开文件的方法
					openFile(file_jf.getText().toString());
					frame.setVisible(false);
				}
			});
		}
	}
	/**
	 * 保存文件的界面
	 */
	class saveFrame {
		public void showFrame(){
			final JFrame frame=new JFrame();
			JLabel file_la=new JLabel("文件名");
			final JTextField file_jf=new JTextField(15);
			JButton sure=new JButton("确定");
			frame.setLayout(new FlowLayout());
			frame.add(file_la);
			frame.add(file_jf);
			frame.add(sure);
			frame.setSize(240,120);
			frame.setLocationRelativeTo(null);
			frame.setTitle("请输入文件名");
			frame.setVisible(true);
			sure.addActionListener(new ActionListener(){
				public void actionPerformed(ActionEvent e){
					saveFile(file_jf.getText().toString());
					frame.setVisible(false);
				}
			});
		}
	}
	/**
	 *	设置字体的界面 
	 */
	class fontFrame{
		public void showFrame(){
			final JFrame fontframe=new JFrame();
			JButton sure=new JButton("确定");
			Font f=new Font("宋体",0,16);
			//字体选择项
			String fontSelection[]=new String[]{"华文彩云","华文行楷","华文楷体","华文琥珀","华文中宋",
					"华文细黑","华文新魏","方正姚体","仿宋","宋体","黑体","隶书","楷体","幼圆"}; 
			final JComboBox<String> fontBox=new JComboBox<String>(fontSelection);
			//设置滚动条
			JScrollPane scroll=new JScrollPane(fontBox);
			fontBox.setFont(f);
			//字形选择项
			String boldSelection[]=new String[]{"常规","加粗","斜体","倾斜加粗"};
			final JComboBox<String> boldBox=new JComboBox<String>(boldSelection);
			boldBox.setFont(f);
			//字体大小
			String size[]=new String[]{"8","9","10","11","12","14","16","18","20","22",
					"24","26","28","36","48","72"};
			final JComboBox<String> fontsize=new JComboBox<String>(size);
			JScrollPane fontSize=new JScrollPane(fontsize);
			fontframe.setLayout(new FlowLayout());
			fontframe.add(scroll);
			fontframe.add(boldBox);
			fontframe.add(fontSize);
			fontframe.add(sure);
			fontframe.setSize(350,260);
			fontframe.setTitle("请选择字体");
			fontframe.setResizable(false);
			//设置窗体显示的位置
			fontframe.setLocationRelativeTo(null);
			fontframe.setVisible(true);
			sure.addActionListener(new ActionListener(){
				//字体设置的方法
				public void actionPerformed(ActionEvent e){
					//得到字体框的选择项
					String font=fontBox.getSelectedItem().toString();
					//得到样式框的选择项
					String bold=boldBox.getSelectedItem().toString();
					//得到字体大小框的字体大小
					String s=fontsize.getSelectedItem().toString();
					Integer size=Integer.parseInt(s);
					//设置字体
					if(bold.equals("常规")){
						textArea.setFont(new Font(font,0,size));
					}else if(bold.equals("加粗")){
						textArea.setFont(new Font(font,1,size));
					}else if(bold.equals("斜体")){
						textArea.setFont(new Font(font,2,size));	
					}else if(bold.equals("倾斜加粗")){
						textArea.setFont(new Font(font,3,size));		
					}
					fontframe.setVisible(false);
				}
			});
		}
	}
	/**
	 * 打开文件的方法
	 * @param fileName 文件的绝对路径名
	 */
	public void openFile(String fileName){
		File file=new File(fileName);
		if(file.exists()){
			try{
				//读取文件
				FileInputStream in=new FileInputStream(file);
				//创建与文件大小相同的字节数组
				byte content[]=new byte[in.available()];
				//读取文件
				in.read(content);
				//将读到的文件放在输入框中显示出来
				textArea.setText(new String(content));
				in.close();
			}catch(Exception e){
				e.printStackTrace();
			}
		}
		else{
			System.out.println("文件不存在");
		}
	}
	/**
	 * 保存文件的方法
	 * @param fileName 文件的绝对路径名
	 */
	public  void saveFile(String fileName){
		String text=textArea.getText();
		try{
			OutputStream out=new FileOutputStream(fileName);
			//text.getBytes();获取文件的字节数
			out.write(text.getBytes());
			out.close();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
}

 监听类:

 

 

 

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import 记事本.NotePad.fontFrame;
import 记事本.NotePad.openFrame;
import 记事本.NotePad.saveFrame;

public class MenuListener implements ActionListener{
	private openFrame open;//弹出打开文件的窗体
	private fontFrame font;//弹出字体文件的窗体
	private saveFrame save;//弹出保存文件的窗体
	private NotePad tf;
	public MenuListener(openFrame open,fontFrame font,saveFrame save,NotePad tf){
		this.open=open;
		this.font=font;
		this.save=save;
		this.tf=tf;
	}
	public void actionPerformed(ActionEvent e){
		String com=e.getActionCommand();
		if(com.equals("打开(O)    Ctrl+O")){//打开一个记事本文件
			open.showFrame();
		}
		else if(com.equals("字体")){//设置字体的窗口
			font.showFrame();
		}
		else if(com.equals("保存(S)    Ctrl+S")){//快捷保存文件
			tf.saveFile("d://新建记事本.txt");
		}
		else if(com.equals("另存为(A)    Ctrl+A")){//另存为新文件
			save.showFrame();
		}
		else if(com.equals("退出(E)")){
			int selection=JOptionPane.showConfirmDialog(null, "确定要退出?","",JOptionPane.YES_NO_OPTION);
			if(selection==0){
				tf.dispose();//退出程序
			}else{
				
			}
		}
	}
	
}

 

0
2
分享到:
评论

相关推荐

    Java记事本制作note

    Java记事本制作是一个基础但实用的编程实践项目,它能帮助初学者更好地理解Java Swing库在图形用户界面(GUI)开发中的应用。这个“Java记事本小程序”是使用集成开发环境MyEclipse编写的,它展示了如何利用Java语言...

    C#个人记事本制作

    C# 、winform版个人记事本制作。适合初学者参考学习,熟练掌握菜单栏的等控件。

    mfc 记事本制作 用于vc6.0 mfc 制作记事本

    在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库在Visual C++ 6.0中创建一个简单的记事本程序。MFC 是一个C++类库,它为Windows应用程序开发提供了抽象和封装,使开发者可以更容易地利用...

    C#_记事本制作

    通过以上知识点,我们可以了解到制作一个简易记事本的过程,包括如何利用C#语言和Visual Studio 2008开发环境创建Windows应用程序,以及如何添加和配置各种控件以实现特定功能。这种实践有助于理解C#编程和Windows...

    C#编程记事本制作过程

    在本教程中,我们将深入探讨如何使用C#编程语言创建一个简单的记事本应用程序。C#是一种面向对象的、类型安全的编程语言,由微软公司开发,主要用于构建Windows应用程序。这个"WindowsApplication2"项目正是一个典型...

    用HTML代码在记事本制作简单网页.pdf

    第一步:打开记事本 打开记事本,准备编写 HTML 代码。记事本是一个简单的文本编辑器,能够编写 HTML 代码。 第二步:编写 HTML 代码 开始编写 HTML 代码。首先编写必须的几个代码:、、、、、、、。这些代码是 ...

    C# 多功能记事本 音乐盒

    【C# 多功能记事本 音乐盒】是一款结合了文字编辑和音乐播放功能的应用程序,旨在为用户提供一个集记录生活、创作灵感与享受音乐于一体的平台。这款软件是用C#编程语言开发的,充分体现了C#在构建桌面应用上的强大...

    Java制作记事本记事本.Java

    Java制作记事本 Java制作记事本 Java制作记事本 Java制作记事本Java制作记事本 Java制作记事本

    wpf 制作的记事本

    wpf 制作的记事本wpf 制作的记事本wpf 制作的记事本wpf 制作的记事本wpf 制作的记事本wpf 制作的记事本wpf 制作的记事本

    C#记事本的制作

    ### C# 记事本制作知识点详解 #### 一、引言 在现代软件开发领域,使用C#语言创建各种应用程序已经成为一种趋势。本篇内容详细介绍如何利用C#中的Visual Studio 2008来设计并实现一个基本的记事本程序。此记事本...

    执着记事本

    记事本制作

    VB制作简易记事本

    【VB制作简易记事本】项目是一个初学者在实习期间使用Visual Basic(VB)编程语言构建的简单文本编辑器,其设计灵感来源于Windows系统自带的记事本应用程序。这个项目旨在帮助用户理解VB的基本概念,以及如何利用VB...

    c#制作的记事本

    本项目“c#制作的记事本”是一个基于C#开发的简单文本编辑器,它具备基本的记事本功能,并且扩展了打印和打印预览的能力,为用户提供更为便捷的文档处理体验。 首先,我们要理解C#记事本的基本结构。一个简单的...

    扫描器+记事本+系统工具启动器等等...

    标题中的“扫描器+记事本+系统工具启动器等等...”揭示了这个压缩包可能包含几种不同类型的实用工具。让我们逐一深入理解这些组件: 1. **扫描器**:在IT领域,扫描器通常指的是网络扫描器或安全扫描器。网络扫描器...

    C#制作记事本.rar

    这个名为"C#制作记事本.rar"的压缩包文件显然包含了一个使用C#编程语言实现的简单记事本程序。这个项目对于初学者来说是很好的实践案例,因为它涉及到基础的GUI(图形用户界面)设计、文本处理以及事件处理等核心...

    C# 制作的记事本

    标题中的"C# 制作的记事本"指的是使用C#编程语言开发的一款文本编辑软件,类似于Windows系统自带的记事本程序。C#是一种面向对象的、现代的编程语言,由微软公司开发,广泛应用于桌面应用、游戏开发、Web应用以及...

    Java制作记事本程序

    在Java编程语言中,制作一个简单的记事本程序是一个经典的练习,它可以帮助初学者深入理解IO流和Swing图形用户界面(GUI)的设计。在这个项目中,我们将主要关注两个核心部分:读写文件的IO流操作和构建用户交互界面...

    java制作记事本代码

    java jframe actionlister file java制作记事本实现文件的打开保存,关闭,复制粘贴剪切等功能

    Qt制作的记事本软件

    【Qt制作的记事本软件】是一个利用Qt框架编写的C++应用程序,旨在提供类似传统记事本的功能,但具有更现代的用户界面和可能的扩展功能。Qt是一个跨平台的开发框架,支持Windows、Linux、macOS等多种操作系统,使得这...

Global site tag (gtag.js) - Google Analytics