JAVA动作监听器



【一】ActionListener基本监听


-----------------------------------------------基本监听链接--------------------------------------------------------


【二】MouseListener鼠标监听


------------------------------------------------鼠标监听链接-------------------------------------------------------


【三】KeyListener键盘监听


-------------------------------------------------键盘监听链接------------------------------------------------------


【四】WindowListener窗口监听


---------------------------------------------------窗口监听----------------------------------------------------------


【五】待续。。。。。



【六】小程序

功能是键盘输入先对应的字符,上面标签约会改变

package key;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
public class Key5 {
	Random random = new Random();
	public Key5() {
		JFrame jframe = new JFrame();		
		jframe.setSize(1000, 800);
		jframe.setLocationRelativeTo(null);
//------创建字符数组------------------------------------------------------------------------------------------	
		String abcdefg[] = new String[62];//创建0-9, A-Z, a-z字符串数组, 62 = 10 + 26 + 26		
		for(int i = 0; i < abcdefg.length; i++) {
			if (i < 10) {
				abcdefg[i] = Character.toString((char)(48 + i));//0-9对应ASCII码表中48 - 57
			}
			else if (i < 36){
				abcdefg[i] = Character.toString((char)(65 - 10 + i));//A-Z对应ASCII码表中65 - 90
				}
			else {
				abcdefg[i] = Character.toString((char)(97 - 36 + i));//a - z对应ASCII码表中97 - 122
			}
		}
//------在第一个标签添加内容---------------------------------------------------------------------------------		
		JPanel jlabe = new JPanel();	
		jlabe.setLayout(null);
		jlabe.setBackground(Color.white);
		Font font = new Font("华文琥珀", Font.PLAIN , 50);
		JLabel jlabel1[] = new JLabel[26];				//创建标签数组	
		for(int i = 0; i < jlabel1.length; i++) {
			jlabel1[i] = new JLabel();		//将标签加入到数组	
			jlabel1[i].setText(abcdefg[i]);
			jlabel1[i].setFont(font);
			jlabel1[i].setForeground(new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255)));
			jlabel1[i].setSize(50, 50);
			jlabel1[i].setLocation(300 + 50 * i,  25);
			jlabe.add(jlabel1[i]);						//将标签加入到面板中
		}			
//------按钮组件的相关设置-------------------------------------------------------------------------------		
		JButton [] jb = new JButton[abcdefg.length];
		for(int i = 0; i < abcdefg.length; i++) {
			jb[i] = new JButton();
			jb[i].setFont(new Font("华文琥珀", Font.PLAIN , 50));
			jb[i].setContentAreaFilled(false);			//设置为透明按钮
			jb[i].setFocusPainted(false);				//去掉焦点边框
		//	jb[i].setBorderPainted(false);				//设置边界是否可见
			jb[i].setText(abcdefg[i]);					//设置按钮标签
			jb[i].setForeground(new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255)));														//RGB随机获取颜色
			jb[i].setBackground(new Color(80, 248, 80));//设置前景色
		}
//-------------------------------------------------------------------------------------------------
		ImageIcon image1 =new ImageIcon("src/5.jpg");
		Image image2 = image1.getImage().getScaledInstance(jframe.getWidth(), jframe.getHeight(), Image.SCALE_DEFAULT);
		//获得图片->得到缩放比例里面设置图片大小和高度,并设置Image.SCALE_DEFAULT属性
		image1.setImage(image2);//图片属性添加到里面
		JLabel jlabel = new JLabel();//添加一个面板
		jlabel.setLayout(new GridLayout(8, 8, 5, 5));
		//设置面板的布局为网格布局,且 8 * 8 的方格, 水平间隙为5像素,垂直间隙为5像素
		jlabel.setIcon(image1);//设置背景图片
		for(int i = 0; i < abcdefg.length; i++) {
			jlabel.add(jb[i]);//将按钮添加到组件
		}
//-----------------------------------------------------------------------------------
		Runnable run = new Runnable() {//
			
			@Override
			public void run() {
				while(true) {
					for(int i = 0; i < abcdefg.length; i++) {
						jb[i].setForeground(new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255)));
					}
					try {
						Thread.sleep(300);
					} catch (InterruptedException e) {

						e.printStackTrace();
					}
	
				}	
			}
		};		
		Thread th = new Thread(run);
		th.start();//启动线程
//-----------------------------------------------------------------------------------	
		jb[0].addKeyListener(new KeyListener() {			
			@Override
			public void keyTyped(KeyEvent e) {						
			}			
			@Override
			public void keyReleased(KeyEvent e) {
				char keyCode = e.getKeyChar();
				String s =Character.toString(keyCode);
				for(int i = 0; i < abcdefg.length; i++) {
					if( s.equals(abcdefg[i])) {
						jb[i].setContentAreaFilled(false);
						for(int j = 0; j < jlabel1.length; j++) {
							if(s.equals(jlabel1[j].getText())) {
								jlabel1[j].setText(abcdefg[random.nextInt(abcdefg.length)]);
							}							
						}
						break;
					}			
				}				
			}		
			@Override
			public void keyPressed(KeyEvent e) {
				char keyCode = e.getKeyChar();
				String s =Character.toString(keyCode);
				for(int i = 0; i < abcdefg.length; i++) {
					if( s.equals(abcdefg[i])) {
						jb[i].setContentAreaFilled(true);		
						break;
					}	
		
				}	
				
			}
		});	
//------------------------------------------------------------------------------------		
		JSplitPane jsplitpane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, jlabe, jlabel);
		jsplitpane.setDividerLocation(100);
		jsplitpane.setDividerSize(0);		
//-------------------------------------------------------------------------------------
		jframe.setIconImage(image2);//设置窗体图标
		jframe.getContentPane().add(jsplitpane);//添加按钮容器		
//----------------------------------------------------------------------------------------		
		jframe.addWindowStateListener(new WindowStateListener() {//添加窗口监听事件			
			@Override
			public void windowStateChanged(WindowEvent e) {
				switch(e.getNewState()) {
				case Frame.NORMAL://正常化
					Image image3 = image1.getImage().getScaledInstance(jframe.getWidth(), jframe.getHeight(), Image.SCALE_DEFAULT);
					image1.setImage(image3);//图片属性添加到里面
					jlabel.setIcon(image1);//设置背景图片					
					break;				
				case Frame.MAXIMIZED_BOTH://最大化
					Image image2 = image1.getImage().getScaledInstance(jframe.getWidth(), jframe.getHeight(), Image.SCALE_DEFAULT);
					image1.setImage(image2);//图片属性添加到里面
					jlabel.setIcon(image1);//设置背景图片
					break;				
				default:		
				}		
			}
		});		
//----------------------------------------------------------------------------------------------------------------------		
		jframe.setVisible(true);
		jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
//-----------------------------------------------------------------------------	
	public static void main(String[] args) {
		new Key5();		
	}
}

在这里插入图片描述




  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值