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();
}
}