JAVA的ActionListener监听器



------------------------------------------------------原帖链接-------------------------------------------------------





【一】基本监听类

(1)通过接口对象创建监听事件

书写格式
ActionListener action = new ActionListener();


作用
当鼠标左键点击窗口中的按钮时触发



package key;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Key2 {
	
//------------------------------------------------------------------------	
	public Key2() {
		JFrame jframe = new JFrame();
		jframe.setSize(600, 600);		   		//设置窗口大小(600 * 600) 像素							
		jframe.setLocationRelativeTo(null); 	//居中显示		
		jframe.setLayout(null);					//设置绝对布局
		JButton jbutton = new JButton();		//添加一个按钮
		jbutton.setSize(200, 200);				//设置按钮大小为(200, 200)像素
		jbutton.setLocation(100, 100);  		//设置按钮在窗口(100,100)像素的位置
		jbutton.addActionListener(action);      //将监听事件加入,这样就可实现监听
		
		jframe.getContentPane().add(jbutton);	//获取容器,并把按钮添加到容器	
		jframe.setVisible(true);				//设置是否显示窗口
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//默认关闭方式
		
	}

//------------------------------------------------------------------------

	ActionListener action = new ActionListener() {			//调用接口
		
		@Override
		public void actionPerformed(ActionEvent e) {
			
			System.out.println("点击就实现");				
			
		}
	};	
	
//------------------------------------------------------------------------	
	public static void main(String[] args) {
		new Key2();			
	}

}



GIF演示
在这里插入图片描述



(2)通过new创建监听事件



package key;

import java.awt.Container;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Key1 {
		
//-----------------------------------------------------------------------------	
	public Key1() {
		JFrame jframe = new JFrame();
		jframe.setSize(600, 600);		   		//设置窗口大小(600 * 600) 像素							
		jframe.setLocationRelativeTo(null); 	//居中显示		
		jframe.setLayout(new GridLayout( 2, 2));//设置网格布局
		Container C = jframe.getContentPane();	//获取容器
		
		JButton jbutton1 = new JButton("按钮1");
		JButton jbutton2 = new JButton("按钮2");
		JButton jbutton3 = new JButton("按钮3");
		JButton jbutton4 = new JButton("按钮4");	//添加一个按钮	
		jbutton4.setLocation(100, 100);  		//设置按钮在窗口(100,100)像素的位置
		
//-----------------------------------------------------------------------------	
		
		//我们只对<按钮4>进行了监听事件	
		jbutton4.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				
				System.out.println("点击就实现");
				
			}
		});

//-----------------------------------------------------------------------------		
		
		C.add(jbutton1);	//通过获取容器,将按钮对象添加到布局里面
		C.add(jbutton2);
		C.add(jbutton3);
		C.add(jbutton4);						
		
		jframe.setVisible(true);									//设置是否显示窗口
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		//默认关闭方式
		
	}
	
//-----------------------------------------------------------------------------	
	public static void main(String[] args) {
		new Key1();
	}

}


GIF演示
在这里插入图片描述



上面代码设置了网格布局,并将“按钮4”添加了监听事件



【二】项目实例



(1)配置文件

------------------------------------------------------点击图片复制到桌面吧--------------------------------------------------------------

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将图片复制到src文件中,如下图

在这里插入图片描述



(2)代码实例

package key;

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class Key3 {
	int width;
	int height;
	public Key3() {	
		
		ImageIcon image = new ImageIcon("src/1.jpg");	//获取图片
		width = image.getIconWidth();					//获取图片宽度	
		height = image.getIconHeight();					//获取图片高度
		
		JFrame jframe = new JFrame();
		jframe.setSize(width, height);					//设置窗口大小
		jframe.setLocationRelativeTo(null);				//窗口剧中显示
		jframe.setLayout(new FlowLayout());
		
		Container C = jframe.getContentPane();
		
		JLabel jlabel = new JLabel();					//添加标签组件
		jlabel.setLayout(new FlowLayout());				//设置标签为流布局
		jlabel.setIcon(image);							//将获取得到图片添加到标签组件中
		

		JButton jbutton1 = new JButton("按钮1");			//添加两个按钮
		JButton jbutton2 = new JButton("按钮2");
		JButton jbutton3 = new JButton("按钮3");
		JButton jbutton4 = new JButton("按钮4");
		jlabel.add(jbutton1);							//将按钮添加到标签组件中
		jlabel.add(jbutton2);
		jlabel.add(jbutton3);
		jlabel.add(jbutton4);
//-------------------------------------------------------------------------------	
		jbutton1.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				ImageIcon image1 = new ImageIcon("src/1.jpg");
				width = image1.getIconWidth();					//获取图片宽度	
				height = image1.getIconHeight();				//获取图片高度
				jframe.setSize(width, height);  				//设置窗口大小
				jlabel.setIcon(image1);
				
				
			}
		});
		
//-------------------------------------------------------------------------------		
		jbutton2.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				ImageIcon image2 = new ImageIcon("src/2.jpg");
				width = image2.getIconWidth();					//获取图片宽度	
				height = image2.getIconHeight();				//获取图片高度
				jframe.setSize(width, height); 
				jlabel.setIcon(image2);
				
			}
		});
		
//-------------------------------------------------------------------------------
		
		jbutton3.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				ImageIcon image3 = new ImageIcon("src/3.jpg");
				width = image3.getIconWidth();					//获取图片宽度	
				height = image3.getIconHeight();				//获取图片高度
				jframe.setSize(width, height); 
				jlabel.setIcon(image3);
				
			}
		});
		
//-------------------------------------------------------------------------------
		
		
		jbutton4.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				ImageIcon image4 = new ImageIcon("src/4.jpg");
				width = image4.getIconWidth();					//获取图片宽度	
				height = image4.getIconHeight();				//获取图片高度
				jframe.setSize(width, height); 
				jlabel.setIcon(image4);
				
			}
		});
		
//-------------------------------------------------------------------------------	
		C.add(jlabel);									//将标签添加到容器中								
		jframe.setVisible(true);
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	

	public static void main(String[] args) {
		new Key3();
	}

}



在这里插入图片描述



【三】下一篇



----------------------------------------------------鼠标监听事件---------------------------------------------------



  • 30
    点赞
  • 166
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Java Swing ,可以通过以下三种途径实现 ActionListener 监听器: 1. 使用内部类实现 ActionListener 监听器 可以在 JFrame 或 JButton 使用一个内部类来实现 ActionListener 监听器。这个内部类需要实现 ActionListener 接口,并重写 actionPerformed 方法。 示例代码如下: ``` public class MyFrame extends JFrame { private JButton myButton; public MyFrame() { myButton = new JButton("Click me!"); myButton.addActionListener(new MyButtonListener()); // ... } private class MyButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // 处理按钮点击事件的逻辑 } } } ``` 2. 使用 Lambda 表达式实现 ActionListener 监听器 可以使用 Lambda 表达式来实现 ActionListener 监听器。Lambda 表达式需要传入一个 ActionEvent 对象,并在箭头后面编写处理事件的逻辑。 示例代码如下: ``` public class MyFrame extends JFrame { private JButton myButton; public MyFrame() { myButton = new JButton("Click me!"); myButton.addActionListener(e -> { // 处理按钮点击事件的逻辑 }); // ... } } ``` 3. 在 JFrame 或 JButton 直接实现 ActionListener 监听器 可以直接在 JFrame 或 JButton 实现 ActionListener 接口,并重写 actionPerformed 方法来实现 ActionListener 监听器。 示例代码如下: ``` public class MyFrame extends JFrame implements ActionListener { private JButton myButton; public MyFrame() { myButton = new JButton("Click me!"); myButton.addActionListener(this); // ... } @Override public void actionPerformed(ActionEvent e) { // 处理按钮点击事件的逻辑 } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值