Swing常用事件监听器

一、监听事件简介

在Swing事件模型中由3个分离的对象完成对事件的处理,分别为事件源、事件以及监听程序。事件源触发一个事件,它被一个或多个“监听器”接收,监听器负责处理事件。

所谓事件监听器,实质上就是一个“实现特定类型监听器接口”的类对象。具体来说,事件几乎都以对象来表示,它是某种事件类的对象,事件源会在用户作出相应的动作时产生事件对象,如动作事件对应ActionListener接口,需要获取某个事件对象就必须实现相应的接口。

 

二、动作事件监听器

动作事件监听器是Swing中比较常用的事件监听器,很多组件的动作都会使用它监听

动作事件监听器
事件名称 事件源 监听接口 添加或删除相应类型监听器的方法
ActionEvent JButton、JList、JTextFiel等 ActionListener addActonListener()、removeActionListener()

示例如下:

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

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class SimpleTest extends JFrame{
	private JButton jb = new JButton("这是一个按钮");
	public SimpleTest() {
		Container c = getContentPane();
		setLayout(null);
		setSize(100,100);
		setVisible(true);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		c.add(jb);
		jb.setBounds(10,10,100,30);
		jb.addActionListener(new jbAction());
	}
	class jbAction implements ActionListener{
		public void actionPerformed(ActionEvent arg0) {
			jb.setText("单击了按钮");
		}
	}
	public static void main(String args[]) {
		new SimpleTest();
	}
}

上述示例运行结果如下:

 

三、焦点事件监听器

焦点事件监听器在实际开发中应用也比较广泛,如将光标焦点移开一个文本框时弹出一个对话框等

焦点事件监听器
事件名称 事件源 监听接口 添加或删除相应类型监听器的方法
FocusEvent Component以及源生类 FocusListener addFocusListeneer()、removeFocusListener()

示例如下:

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

public class FocusEventTest extends JFrame{
	public FocusEventTest() {
		Container c =getContentPane();
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		JTextField jt = new JTextField("请单击其他文本框",10);
		JTextField jt2 = new JTextField("请单击这里",10);
		c.add(jt);
		c.add(jt2);

		setLayout(new FlowLayout());
		setSize(100,100);
		setVisible(true);
		jt.addFocusListener(new FocusListener() {
			
			@Override
			public void focusLost(FocusEvent e) {
				// TODO 自动生成的方法存根
				JOptionPane.showMessageDialog(null, "文本框失去焦点");
			}

			@Override
			public void focusGained(FocusEvent e) {
				// TODO 自动生成的方法存根
				
			}
		});
	}
	public static void main(String args[]) {
		new FocusEventTest();
	}
}

上述示例运行结果如下:

 

发布了61 篇原创文章 · 获赞 1 · 访问量 1329

猜你喜欢

转载自blog.csdn.net/qq_29440983/article/details/103727672