我是靠谱客的博主 生动店员,最近开发中收集的这篇文章主要介绍Swing常用事件处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

事件处理

定义: Swing 组件中的事件处理专门用于响应用户的操作,例如,响应用户的单击鼠标,按下键盘等操作。

Swing 事件处理涉及的三类对象:
**事件源:**事件发生的场所,通常就是产生事件的组件,例如窗口,按钮,菜单等。
**事件对象:**封装了 GUI 组件上发生的特定事件(通常就是用户的一次操作)
**监听器:**负责监听事件源上发生的事件,并对各种事件做出相应处理的对象时象中包含事件处理器)

Swing 常用事件处理

1、窗体事件
说明:对窗体进行操作时,例如窗体的打开,关闭,激活,停用等,这些动作都属于窗体事件, Java 中提供了一个 WindowEvent 类用于表示窗体事件
使用:首先需要定义一个实现了 WindowListener接口的类作为窗体监听器,然后通过 addWindowListener() 方法将窗体对象与窗体监听器进行绑定。

				//1.创建容器窗体
				JFrame jf=new JFrame("窗体事件");
				jf.setBounds(100, 200, 300, 400);
				
				//为窗体(注册监听)
				jf.addWindowListener(new WindowListener() {
					
					@Override
					public void windowOpened(WindowEvent e) {
						System.out.println("windowOpened : 窗体打开事件");
						
					}
					
					@Override
					public void windowIconified(WindowEvent e) {
						System.out.println("windowIconified : 窗体图标化事件/最小化");
						
					}
					
					@Override
					public void windowDeiconified(WindowEvent e) {
						System.out.println("windowDeiconified : 窗体取消图标化事件/取消最小化");
						
					}
					
					@Override
					public void windowDeactivated(WindowEvent e) {
						System.out.println("windowDeactivated : 窗体停用事件");
						
					}
					
					@Override
					public void windowClosing(WindowEvent e) {
						System.out.println("windowClosing : 窗体正在关闭事件");
						
					}
					
					@Override
					public void windowClosed(WindowEvent e) {
						System.out.println("windowClosed : 窗体关闭事件");
						//被执行,看不到效果
					}
					
					@Override
					public void windowActivated(WindowEvent e) {
						System.out.println("windowActivated : 窗体激活事件");
						
					}
				});
				

2、鼠标事件

		//1.创建容器窗体
		JFrame jf=new JFrame("鼠标事件");
		jf.setBounds(100, 200, 300, 400);
		
		//创建按钮组件
		JButton btn=new JButton("按钮");
		
		//为事件注册鼠标监听器
		btn.addMouseListener(new MouseListener() {
			
			@Override
			public void mouseReleased(MouseEvent e) {
				System.out.println("mouseReleased : 鼠标释放事件");
				
			}
			
			@Override
			public void mousePressed(MouseEvent e) {
				System.out.println("mousePressed : 鼠标被按下事件");
				int button=e.getButton();
				//System.out.println(button);
				if(button==MouseEvent.BUTTON1) {
					System.out.println("鼠标左键被点了");
				}else if(button==MouseEvent.BUTTON2) {
					System.out.println("鼠标滚轮被点了");
				}else if(button==MouseEvent.BUTTON3){
					System.out.println("鼠标右键被点了");
				}
				
			}
			
			@Override
			public void mouseExited(MouseEvent e) {
				System.out.println("mouseExited : 鼠标移出按钮区域事件");
				
			}
			
			@Override
			public void mouseEntered(MouseEvent e) {
				System.out.println("mouseEntered : 鼠标进入按钮区域事件");
				
			}
			
			@Override
			public void mouseClicked(MouseEvent e) {
				System.out.println("mouseClicked : 鼠标完成点击事件");
				
			}
		});
		
		jf.add(btn);
		
		jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);;
		jf.setVisible(true);
	}

3、键盘事件

		//1.创建容器窗体
		JFrame jf=new JFrame("键盘事件");
		jf.setBounds(100, 200, 300, 400);
		
		JButton btn=new JButton("登陆");
		
		btn.addKeyListener(new KeyAdapter() {

			@Override
			public void keyPressed(KeyEvent e) {
				int keyCode=e.getKeyCode();
				if(keyCode==10) {
					System.out.println("回车已被按下,可以登陆");
				}
			}
		});
		jf.add(btn);
		
		jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);;
		jf.setVisible(true);
	}

	private static JTextField method() {
		JTextField text=new JTextField(3);
		
		text.addKeyListener(new KeyAdapter(){
			@Override
			public void keyPressed(KeyEvent e) {
				// 通过getKeyChar来获取按下的字符
				char c=e.getKeyChar();
				
				//通过getKeyCode来获取字符所对应的数值
				int code=e.getKeyCode();
				
				System.out.println("键盘按下的字符内容为:"+c);
				System.out.println("键盘按下的字符代码为:"+code);
			}
		});
		return text;
	}

4、动作事件
说明:动作事件与前面三种事件有所不同,它不代表某类事件,只是表示一个动作发生,例如,在关闭一个文件时,可以通过键盘关闭,也可以通过鼠标关闭,动作事件用 ActionEvent 类表示
使用:处理动作事件的监听器对象需要实现 ActionListener 接口

		//1.创建容器窗体
		JFrame jf=new JFrame("动作事件");
		jf.setBounds(100, 200, 300, 400);
		
		JButton btn=new JButton("按钮");
		
		btn.addMouseListener(new MouseAdapter() {
			@Override
		public void mouseClicked(MouseEvent e) {
			System.out.println("我被点击了,我是ActionListener,我也能监听点击的动作");
		}
		});
		jf.add(btn);
		
		jf.setDefaultCloseOperation(jf.EXIT_ON_CLOSE);;
		jf.setVisible(true);
	}

最后

以上就是生动店员为你收集整理的Swing常用事件处理的全部内容,希望文章能够帮你解决Swing常用事件处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部