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

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

阅读更多

 

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
分享到:
评论

相关推荐

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

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

    Java2核心技术.part5

    8.1. 3将组件变成事件监听器 8.1.4实例:改变观感 8.1.5实例:捕获窗口事件 8.2 AWT事件继承层次 8.3 AWT的语义事件和低级事件 8.4低级事件类型 8.4.1键盘事件 8.4.2鼠标事件 8.4.3焦点事件 ...

    Java2核心技术.part3

    8.1. 3将组件变成事件监听器 8.1.4实例:改变观感 8.1.5实例:捕获窗口事件 8.2 AWT事件继承层次 8.3 AWT的语义事件和低级事件 8.4低级事件类型 8.4.1键盘事件 8.4.2鼠标事件 8.4.3焦点事件 ...

    Java2核心技术.part1

    8.1. 3将组件变成事件监听器 8.1.4实例:改变观感 8.1.5实例:捕获窗口事件 8.2 AWT事件继承层次 8.3 AWT的语义事件和低级事件 8.4低级事件类型 8.4.1键盘事件 8.4.2鼠标事件 8.4.3焦点事件 8.5动作 ...

    Java2核心技术.part6

    8.1. 3将组件变成事件监听器 8.1.4实例:改变观感 8.1.5实例:捕获窗口事件 8.2 AWT事件继承层次 8.3 AWT的语义事件和低级事件 8.4低级事件类型 8.4.1键盘事件 8.4.2鼠标事件 8.4.3焦点事件 ...

    Java2核心技术.part4

    8.1. 3将组件变成事件监听器 8.1.4实例:改变观感 8.1.5实例:捕获窗口事件 8.2 AWT事件继承层次 8.3 AWT的语义事件和低级事件 8.4低级事件类型 8.4.1键盘事件 8.4.2鼠标事件 8.4.3焦点事件 ...

    Java2核心技术.part2

    8.1. 3将组件变成事件监听器 8.1.4实例:改变观感 8.1.5实例:捕获窗口事件 8.2 AWT事件继承层次 8.3 AWT的语义事件和低级事件 8.4低级事件类型 8.4.1键盘事件 8.4.2鼠标事件 8.4.3焦点事件 ...

    Java开发技术大全 电子版

    3.3成员变量的定义与使用109 3.3.1成员变量的定义109 3.3.2成员变量的访问权限110 3.3.3实例成员变量和静态成员变量114 3.4方法的定义和实现116 3.4.1方法的声明117 3.4.2创建方法体与return语句117 3.4.3...

    JDBC 3.0数据库开发与设计

    3.2.3 连接事件监听器(Connection EventListener) 3.3 获取数据库信息 3.3.1 获取数据库详细信息 3.3.2 获取数据库基本信息 3.3.3 获取数据库中表的信息 3.3.4 获取表中各列的信息 3.3.5 获取索引的信息 ...

    黑客反汇编揭秘(第二版).part1.rar

    5.4.7 反监听器 79 5.4.8 反转储器 79 5.4.9 弥补保护机制 80 5.5 容易导致严重后果的小错误 80 第6章 热身 83 6.1 创建保护机制,并尝试破解 83 6.2 走近反汇编器 85 6.2.1 批反汇编器与交互式反汇编器 86 ...

    黑客反汇编揭秘(第二版).part2.rar

    5.4.7 反监听器 79 5.4.8 反转储器 79 5.4.9 弥补保护机制 80 5.5 容易导致严重后果的小错误 80 第6章 热身 83 6.1 创建保护机制,并尝试破解 83 6.2 走近反汇编器 85 6.2.1 批反汇编器与交互式反汇编器 86 ...

    Android项目ListView保持在列表的顶部固定View 案例分析 源码.rar

    3. 利用监听器捕获滚动事件,根据需要调整固定View的显示状态。 **源码结构**: - `MainActivity.java`:主Activity类,负责初始化ListView和Adapter。 - `CustomAdapter.java`:自定义Adapter类,用于处理数据...

    ORACLE9i_优化设计与系统调整

    §12.3.1 避免基于规则优化器技术 139 §12.3.2 索引代价 139 §12.3.3 分析统计数据 139 §12.3.4 避免复杂的表达式 142 §12.3.5 处理复杂的逻辑 143 §12.3.6 一般的SQL语句优化 143 §12.4 SQL语句优化技巧 144 ...

    vc++ 开发实例源码包

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_1

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_3

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_6

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

Global site tag (gtag.js) - Google Analytics