什么是事件监听?
例如,点击按钮,弹出一个文本框,点击一个文本,文本被删除;
按钮、文本等组件就是事件源
事件就是从开始触发事件源到出现效果的一个过程
以下是一个案例,点击按钮,记录点击的次数和获取失去焦点事件
package cn.com.plane;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class EventDemo{
/*author:命运的信徒
* date:2019/1/18
* arm:记录点击鼠标的次数
*/
static JLabel jl1=new JLabel();
static JLabel jl=new JLabel();
static int clicks;
private static void setPage(){
//1.设置窗体的内容和大小
JFrame jf=new JFrame("获取点击鼠标的次数");
//可以固定窗体的大小,很好
jf.setPreferredSize(new Dimension(300, 300));
//设置布局模式
BorderLayout flo=new BorderLayout();
//第一个部分
//一个不同的按钮
JPanel jp=new JPanel(flo);
jf.add(jp);
JButton jb=new JButton("点我,你就有机会获取大奖");
//设置背景色
jb.setBackground(Color.red);
//设置前景色
jb.setForeground(Color.white);
//设置位置
jp.add(jb,flo.NORTH);
//最关键的地方,为这个button设置事件属性
//1.添加监听器
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//当鼠标点击的时候,就执行+1的操作
jl1.setText("按钮被点击了"+(clicks++)+"次");
}
});
jp.add(jl1,flo.SOUTH);
//第二个部分
JPanel jpq=new JPanel();
jf.add(jpq,flo.EAST);
JTextField jla=new JTextField();
jla.setColumns(30);
jpq.add(jla);
jla.addFocusListener(new FocusListener() {
public void focusLost(FocusEvent e) {
//失去焦点的时候
jl.setText("输入结束....");
}
public void focusGained(FocusEvent e) {
// 获取焦点的时候
jl.setText("正在输入中.....");
}
});
jpq.add(jl);
//2.设置关闭窗口的时候就是关闭程序的时候
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗体可见
jf.pack();
jf.setVisible(true);
}
public static void main(String[] args) {
setPage();
}
}
效果如下
1、点击按钮的时候,下面出现点击的次数
textfield文本框失去焦点,提示输入结束...
2、把鼠标放在文本框里面的时候,