`
商山居士
  • 浏览: 9051 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

山寨记事本总结常用的事件机制和文件输入输出方法

 
阅读更多

在Java中什么是swing?简单的说就是Java中包装好的并且规定好的用来做窗体UI的一套API;以下简单的介绍一下常用的swing组件。

1:JButton:代表Swing按钮,可以带一些图片或者文字;

2:JCheckBox:代表Swing组件的复选框组件;

3:JComBox:代表下拉列表框;可以在下拉显示区域显示多个选项;

4:JFrame:代表Swing框架类;

5:JDialog:代表Swing版本对话框;

6:JLabel:代表Swing中的标签组件;

7:JRadioButton:代表swing中的单选按钮;

8:JList:代表能够在用户界面中显示一系列条目组件;

9:JTextField:代表文本框;

10:JPaswordField:代表密码框;

11:JTextarea:代表swing中的文本区域;

12;JOptionPane:代表swring中的一些对话框;

常用的事件监听其实很好理解首先要明白什么是事件?什么是事件监听器?什么是事件源?
 事件:对于组件的任何一个操作:点击按钮,选中菜单项  鼠标移动,鼠标按下,键盘输入...

事件监听器:用来监听在某个组件上是否发生了对应的事件

事件源:发生事件的组件对象

理清了这三个因素以后,就明白,在哪里(事件源)发生事件则需要监听哪里,下面看一下最简单的山寨版记事本文件


 以下是实现部分功能的代码

package wenjiancaozuo;


import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.FileOutputStream;

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.ScrollPaneConstants;

/**
 * 界面类
 * 
 * @author wangwei
 * 
 */
public class NotePadUI {

	public static void main(String args[]) {

		// 创建界面
		JFrame jf = new JFrame();
		// 设置标题
		jf.setTitle("java记事本");
		// 设置初始大小
		jf.setSize(500,500 );
		

		// 设置点击关闭按钮的时候退出程序
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// 创建多行文本框
		JTextArea area = new JTextArea();
		//设置背景颜色
		area.setBackground(Color.PINK);
		
		// 添加菜单栏
		JMenuBar bar = new JMenuBar();

		// 创建事件监听器对象
		NotePadListener lis = new NotePadListener(area);

		String[] menus = { "文件(F)", "编辑(E)", "格式(O)", "查看(V)", "帮助(H)" };
		String[][] items = {
				{ "新建(N)", "打开(O)", "保存(S)", "另存为(A)", "-", "页面设置(U)","打印(P)", "-", "退出(X)" },
				{ "撤销(U)", "-", "剪切(T)", "复制(C)","查找(F)","替换(L)","删除(X)" }, {"自动换行","字体"},
				{"状态栏"}, {"查看帮助(H)","关于记事本(A)"} };

		// 每个菜单项的唯一标识
		String[][] commands = {
				{ "newFile", "open", "save", "saveAs", "-", "pageSet", "print",
						"-", "exit" }, { "withDraw", "-", "cut", "copy" ,"find","replace","delete"}, {"AUTO","char"},
				{"Status"}, {"help","with"} };

		// 循环创建JMenu,放在JMenuBar上
		for (int i = 0; i < menus.length; i++) {
			JMenu menu = new JMenu(menus[i]);
			bar.add(menu);
			for (int j = 0; j < items[i].length; j++) {
				if (items[i][j].equals("-")) {
					// 就加入分隔条
					menu.addSeparator();

				} else {
					JMenuItem item = new JMenuItem(items[i][j]);
					// 设置菜单项的唯一标识(动作命令)
					item.setActionCommand(commands[i][j]);

					// 将菜单项加载对应的菜单上
					menu.add(item);
					// 给菜单项绑定监听器
					item.addActionListener(lis);
				}
			}

		}

		// 设置窗体的菜单
		jf.setJMenuBar(bar);

	

		// 滚动面板,将多行文本框放到滚动面板面板中
		JScrollPane sp = new JScrollPane(area);
		// 设置一直显示滚动条并且在什么时候可见设置为always
		
		sp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		sp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
		//添加在窗体上
		jf.add(sp);
		//设置窗体可见

		jf.setVisible(true);
		
		
		
	}

	}

 


 

package wenjiancaozuo;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import javax.swing.JTextArea;

public class NotePadListener implements ActionListener{
	private JTextArea area;
	//通过构造方法传值过来
	public  NotePadListener(JTextArea area){
		this.area=area;
		
	}

	
	

   //通过事件触发自动调用
	public void actionPerformed(ActionEvent e) {
		//获得被选中的菜单项目的动作命令
		String command =e.getActionCommand();
		if(command.equals("save")){
		//获得多行文本框的数据
			//得到文本框内容
			
			String  str =area.getText();
			String path = "F:\\aba\\d.txt";
			try{
				FileOutputStream fos = new FileOutputStream(path);
				//这里写入的数据很可以用字节数组来写入
				//获得字节数组
				byte[] bs =  str.getBytes();
				fos.write(bs);
				fos.flush();
				fos.close();
				
			}catch(Exception ef){
				ef.printStackTrace();
			}
			
		}else if(command.equals("open")){
			String path1 = "F:\\aba\\d.txt";
			try{
				FileInputStream fis = new FileInputStream(path1);
				//文件比较小所以用获取流的长度来实现
				int Len = fis.available();
				//流中有多大字节就定义多大数组
				byte[] bs = new byte[Len];
				//将流中字节读入数组
				fis.read(bs);
				//将字节数转换成字符串
				String mg = new String(bs);
				
				area.setText(mg);
			}catch(Exception ef){
				ef.printStackTrace();
			}
		}
		
	}

}

 以上是山寨版的简单的记事本,也只是实现了部分功能,主要通过小程序来说明以下swing组件的部分简单的用法和回顾以下IO流
 

 

 

  • 大小: 73.6 KB
  • 大小: 83.4 KB
分享到:
评论

相关推荐

    山寨记事本(含源文件)

    【标题】:“山寨记事本(含源文件)”是一个基于VB.NET开发的简易文本编辑器,它提供了基本的文字编辑功能,类似于Windows操作系统内置的“记事本”程序。这个项目的特点在于它附带了完整的源代码,为学习和研究VB...

    广东工业大学JAVA第三次作业-山寨记事本(代码+报告)

    2. **IO流**:记事本应用的核心是读写文件,这需要用到Java的IO流技术,如`FileReader`、`FileWriter`、`BufferedReader`、`BufferedWriter`等,用于实现文件的打开、读取、写入和关闭。 3. **Swing库**:Java的...

    山寨机语音文件

    【标题】:“山寨机语音文件”这一主题主要涉及到的是手机语音技术在非正规或低成本手机(通常被称为“山寨机”)中的应用。这类设备通常在中国的一些小型制造商中生产,它们试图模仿主流品牌的功能,但价格更为亲民...

    手机记事本java版

    notepad.jar 手机软件记事本、备忘录java版本 ,简单实用,山寨机也可用

    七个山寨机TTS语音文件打包

    【TTS技术详解】 TTS,全称Text To Speech,即文本转语音技术。这是一种将文字信息转化为可听见的语音输出的...对于使用山寨NOKIA N98或其他手机的用户来说,正确地安装和设置TTS文件,可以提升设备的实用性和便利性。

    山寨机用的词典文件

    总结一下,这些“山寨机用的词典文件”是为低成本、非主流智能手机设计的,包含有英文到中文和中文到英文的词典数据。它们使用了PDB格式存储数据,并有对应的索引文件以优化搜索性能。用户需要一个兼容的词典应用来...

    Java实习报告——山寨QQ聊天工具设计

    这个项目是针对J2SE平台设计的,主要运用了Java的面向对象编程、网络编程、输入输出流(I/O流)、数据结构和多线程技术。 在需求分析阶段,设计者曾昊明确了系统必须具备的基本功能,如用户能够进行身份的注册与登录...

    山寨手机安装飞信,QQ必备文件

    然而,通过一些特定的文件和方法,我们可以使这些应用在山寨手机上运行。 标题提到的"山寨手机安装飞信,QQ必备文件"意味着我们需要关注两个核心应用:飞信和QQ2008。飞信是中国移动推出的一款即时通讯应用,而...

    万能通用山寨手机语音王TTS文件

    这个压缩包包含了一系列关键文件,用于实现语音合成功能,使得手机能够将文字信息转化为可听的语音输出,尤其适用于那些功能较为简单或者不支持原生TTS系统的山寨手机。 首先,我们要了解什么是TTS技术。TTS是一种...

    山寨手机mtk MRP游戏 文件管理软件

    思凯。mrp文件管理工具,用于修改MRP游戏、软件显示英文名。

    山寨APP的危害以及防止山寨APP的方法

    ### 山寨APP的危害以及防止山寨APP的方法 #### 山寨APP的危害 ##### 对用户的危害 1. **窃取账号**:山寨APP通过各种手段获取用户的登录信息,进而非法访问用户的账户,可能导致资金被盗或其他隐私泄露。 2. **...

    山寨版qq源码.素材

    4. **UI设计与实现**:山寨版QQ的UI设计模仿了原版,可以让我们了解如何使用Android的XML布局文件或者iOS的Storyboard来创建界面,以及如何绑定事件处理函数。 5. **安全机制**:尽管是山寨版,但QQ的账号安全机制...

    “山寨”分析仪事件:假冒仪器累计达600多台.docx

    总的来说,"山寨"分析仪事件提醒我们,无论是制造商还是消费者,都必须高度重视产品的质量和真伪验证,同时,政策制定者和执行者也需要强化法规,打击制假售假行为,以确保科技产品的可靠性和公众的安全。

    山寨版QQ 源代码 QQ2010界面

    通过分析这些源代码,学习者可以了解如何在Java中实现GUI的设计,包括窗口布局、按钮、文本框等元素的创建,以及事件处理机制,如点击按钮后的响应。此外,还可能涉及线程管理,因为即时通讯应用通常需要在后台持续...

    Java编写的山寨QQ源代码

    事件监听器(如`ActionListener`)和事件处理器(如`actionPerformed`方法)用于处理这些交互。 7. **数据存储**:为了持久化用户数据,项目可能使用了数据库。Java提供JDBC(Java Database Connectivity)API来与...

    山寨 手机 uc mrp安装文件

    山寨 手机 uc mrp安装文件 山寨 手机 uc mrp安装文件

    山寨机常用软件

    MTK平台软件,山寨机哦

    Java山寨版qq源码+素材

    3. **事件处理**:Java事件监听机制是GUI编程的关键,用户操作如点击按钮、输入文字都会触发相应的事件处理器。 4. **多线程**:为了实现异步处理,如接收和发送消息,源码中可能会有多个线程在后台运行,如...

    基于java反射机制的山寨版WEB2

    在"基于Java反射机制的山寨版WEB2"项目中,开发者利用这一特性创建了一个简易的Web应用程序,实现了文件上传下载、处理中文乱码、NEW和SPRING模式的支持以及JSON数据交互等功能。 1. **文件上传下载与中文乱码处理*...

    山寨java版qq

    7. **事件驱动编程**:Java的事件模型(Event Model)用于处理用户的交互事件,如点击按钮、输入文字等,这通常与监听器(Listener)和回调函数(Callback)相关联。 8. **错误处理与异常处理**:为了保证程序的...

Global site tag (gtag.js) - Google Analytics