`
百合不是茶
  • 浏览: 356051 次
社区版块
存档分类
最新评论

监听器技术分析与使用技巧

阅读更多

 

swing体系:Java中用来做UI的一套API
	java.awt
	javax.swing
	
	JFrame:窗体	
	JPanel:面板
	
	JLabel:文本标签和图片标签
	JTextField:文本输入框
	JPasswordField:密码输入框
	JButton:按钮
	JComboBox:下拉框
	JCkeckBox:多选框
	JRadioButton:单选按钮
	JTextArea:多行文本框
	
	JMenuBar
	JMenu
	JMenuItem
 在创建菜单栏时,如果有"-"必须要进行判断
  if(items[i][j].equals("-")){
				menu.addSeparator();
			  }else{
				 JMenuItem item = new JMenuItem(items[i][j]);
				 item.setActionCommand(commands[i][j]);
				 menu.add(item);
	
	事件:对于组件的任何一个操作:点击按钮,选中菜单项  鼠标移动,鼠标按下,键盘输入...
	事件监听器:用来监听在某个组件上是否发生了对应的事件
	事件源:发生事件的组件对象
	
	常用的事件监听器:(接口)
	动作监听器:ActionListener
	鼠标按键监听器:MouseListener
	鼠标移动监听器:MouseMotionListener
	鼠标滚轮监听器:MouseWheelListener
	键盘监听器:KeyListener
	
	
	FileInputStream
	FileOutputStream
	
	
	1.如何定义事件监听器
	2.如何区分每个菜单项
	3,如何给菜单项绑定监听器
	4.如何将UI中的对象传递给监听器
	5,如何读写硬盘中的数据
	
	
	
	

 

 

简单实现读写的记事本, 技术点是swing,awt,io组件的综合应用,代码如下.;



 

 

 

package 监听器的练习0621;

import java.awt.Color;

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.JTextField;
import javax.swing.ScrollPaneConstants;
import javax.swing.border.LineBorder;

public class Note extends JFrame{

	public static void main(String[] args) {
		Note note = new Note();
		note.init();
	}
	
	public void init(){
		
		this.setTitle("记事本");
		this.setSize(500,500);
		this.setDefaultCloseOperation(3);

		this.setResizable(false);
		//创建多行文本
		JTextArea area = new JTextArea();
		
		//设置多行编辑区域的边框颜色
		LineBorder border= new LineBorder(Color.BLACK);
		area.setBorder(border);
		
		//创建菜单栏
		JMenuBar bar = new JMenuBar();
		//创建监听器的对象
		Notelisetener lis = new Notelisetener(area);
		
		//创建Menu
		String[] menus = { "文件(F)", "编辑(E)", "格式(O)", "查看(V)", "帮助(H)" };
		//创建Item
		String[][] items =  {{"新建", "打开", "保存", "另存为", "-", "页面设置", "打印", "-", "退出" },
				{ "撤销", "-", "剪切", "复制" }, {"txt"}, {"F1"}, {"F1"}};
		//设置默认的标示
		String[][] commands = {{ "newFile", "open", "save", "saveAs", "-", "pageSet", "print",
			"-", "exit" }, { "withDraw", "-", "cut", "copy" }, {"txt"},
	{"f1"}, {"f1"} };
		
		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);
			  }
			}
		}
		//将菜单栏增加到窗体上
		this.setJMenuBar(bar);
		
		
		//设置滚动条将多行文本放入滚动条中
		//创建滚动条的对象,将需要滚动条的组件传到滚动条的对象中
		JScrollPane js = new JScrollPane(area);
		//设置上下滚动和水平滚动
		js.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
		js.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
		this.add(js);
		
		this.setVisible(true);

	}

}

 

 

package 监听器的练习0621;

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

import javax.swing.JTextArea;

public class Notelisetener implements ActionListener {
	
	private JTextArea area;
	
	public Notelisetener(JTextArea area){
		this.area = area;
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		String command = e.getActionCommand();
		if(command.equals("save")){
			//获取文本区域内的内容
			String str = area.getText();
			String path = "C:\\Users\\Administrator\\Desktop\\文档.txt";
			
			try {
				FileOutputStream fos =new FileOutputStream(path);
				byte[] bs =str.getBytes();
				fos.write(bs);
				fos.flush();
				fos.close();
				
			} catch (FileNotFoundException e1) {
				
				e1.printStackTrace();
			} catch (IOException e1) {
				
				e1.printStackTrace();
				}
				
			}else if(command.equals("open")){
				String path1 = "C:\\Users\\Administrator\\Desktop\\文档.txt";
				try {
					FileInputStream fis = new FileInputStream(path1);
					//获取管道中流的长度
					int len= fis.available();
					byte[] by = new byte[len];
					fis.read(by);
					String str = new String(by);
					area.setText(str);
					
				} catch (FileNotFoundException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} catch (IOException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}
			
		}
		
	}

}

 

  • 大小: 11.6 KB
0
1
分享到:
评论

相关推荐

    Iris网络嗅探器使用与技巧.zip

    7. **技巧与最佳实践** - 使用Wireshark过滤表达式语法,提高数据包过滤效率。 - 在高流量环境下,启用包缓存以减少内存消耗。 - 定期导出捕获的数据包文件,以便后期分析或备份。 - 使用实时警报功能,对特定...

    激光窃听技术的改进与实现

    其中涉及到的激光器型号(例如He-Ne激光器)、频率范围(如650nm)以及电子元件的规格(例如SPCE061A芯片、LM386放大器)等具体技术参数,说明了激光窃听技术在硬件实现上对精确性和专业性的要求。 此外,文件中还...

    Python技术测试与调试技巧.docx

    从给定文件的信息来看,虽然标题提及的是“Python技术测试与调试技巧”,但在描述部分却提到了Matlab技术的相关内容,这显然存在一定的混淆。基于此,本篇内容将主要围绕Python技术测试与调试技巧进行深入探讨,同时...

    JSP监听器用法分析

    具体使用技巧上,我们可以编写监听器类实现上述监听器接口。例如,一个在线统计的例子中,我们定义了一个类ONline,这个类实现了ServletContextListener、HttpSessionListener和HttpSessionAttributeListener接口。...

    can总线原理及使用技巧与案例

    - **仲裁机制**:CAN总线使用非破坏性仲裁,节点在发送数据的同时监听总线,如果发现自己发送的ID比其他节点大,则立即停止发送,避免冲突。 2. **CAN总线特性**: - **高速性**:CAN总线最高波特率可达1Mbps,...

    lislislislislislislislis

    7. **诊断和故障排查**:`dynamic_listener01.TXT`和`dynamic_listener02.TXT`可能是监听器的日志文件,用于分析和解决连接问题。 8. **SSL/TLS加密**:现代环境中,监听器可能配置为使用SSL/TLS加密,以增强网络...

    Excel使用技巧

    【标题】:“Excel使用技巧”通常指的是在Microsoft Excel这款电子表格软件中进行高效操作和数据分析的方法。Excel是商业环境中广泛使用的工具,它提供了强大的计算、图表制作、数据分析以及宏编程功能。以下是一些...

    Linux下重启oracle服务及监听器和实例详解

    接下来,通过`lsnrctl start`命令启动监听器,监听器是Oracle数据库与客户端通信的关键组件,确保数据传输的正常进行。 第二种方法同样需要进入Oracle的安装目录,但是这次是以普通用户身份登录,然后切换到 `$...

    android开发技巧与性能优化

    2. **事件处理机制**:Android采用监听器的方式处理用户输入事件,如点击、触摸等,而Java中的Swing和AWT则主要依赖于事件监听模型。 3. **生命周期管理**:Android应用具有明确的生命周期,包括启动、暂停、停止和...

    Flash,Flex和AIR应用开发内存监测及优化技巧

    例如,在添加事件监听器时使用弱事件监听器,或者在使用Flex4的Spark框架时,利用partAdded()和partRemoved()方法来管理事件监听器的添加和移除。此外,建议优先使用Vector代替Array,并在适当的情况下消除子表达式...

    Android 知识库,涵盖初级-中级-高级,常见的面试题、知识盲区、使用技巧等等.zip

    5. **知识盲区与使用技巧** - **Android Studio技巧**:快捷键、Gradle构建的理解、调试技巧等,提高开发效率。 - **动画与过渡效果**:理解Property Animation和View Animation,创建动态UI。 - **自定义View**...

    商业编程-源码-VC开发工具使用技巧源代码 keyboard_recorder_source.zip

    总结,这份"键盘记录器"源码集合不仅展示了VC开发工具的使用技巧,还涵盖了Windows API调用、错误处理、多线程、调试、代码组织和版本控制等多个方面的知识点。通过深入学习和实践,开发者可以增强自己的编程能力,...

    《网络扫描技术揭秘 原理、实践与扫描器的实现》的

    《网络扫描技术揭秘:原理、实践与扫描器的实现》是一部深入探讨网络安全领域的专著,主要聚焦于网络扫描这一核心技术。网络扫描是网络安全评估和漏洞发现的重要手段,它通过主动或被动的方式探测网络中的设备、服务...

    oracle数据库DBA专题技术精粹.zip

    本书从DBA的角度阐述了...性能篇深入分析了Statspack等常用的调整工具的原理与使用方法、判断依据,并从锁、内存、索引、执行计划等各个角度介绍了各种优化技巧;网络篇主要介绍了监听器、透明网关、数据迁移等方面的

    《深入分析JavaWeb技术内幕》修订版.pdf

    3. **过滤器与监听器**:这两者是JavaWeb中的重要组件,过滤器可以对请求和响应进行预处理和后处理,监听器则可以监控应用中发生的特定事件。书中会阐述它们的用法和实现,如字符编码过滤器、登录验证过滤器等。 4....

    百度云下载--《深入分析Java Web技术内幕》修订版 许令波著 PDF扫描版[92M]

    它不仅涵盖了Java Web技术的基础知识,还深入探讨了各种框架的使用技巧和最佳实践。对于希望深入了解Java Web开发的读者来说,这本书无疑是宝贵的学习资源。此外,本书还可能包括了一些高级主题,如分布式系统设计、...

    JMeter使用技巧

    4. 运行测试计划,并通过查看结果树监听器观察响应数据,从而检查HTTP请求的具体内容。 #### JMeter分布式测试 当需要模拟大量并发用户访问时,单台计算机的资源限制可能会成为瓶颈。为此,JMeter支持分布式测试,...

    C#技巧经典收藏版集

    根据给定文件的信息,本文将深入探讨C#编程语言中几个关键的知识点,这些知识点源自“C#技巧经典收藏版集”,主要聚焦于消息队列应用程序、读取URL中的XML数据、实时应用技术、数据库事务原理及实践以及DirectDraw等...

    0688、短波无线监听发射器2(100MHz).rar

    7. **实验与测试**:在实际环境中测试发射器和监听器的性能,记录数据,评估通信距离、清晰度和稳定性。 8. **硬件与软件集成**:可能涉及微控制器或嵌入式系统,将硬件电路与控制软件结合,实现自动化操作和参数...

Global site tag (gtag.js) - Google Analytics