按钮监听
ActionListener 按钮监听
创建一个匿名类实现ActionListener接口,当按钮被点击时,actionPerformed方法就会被调用
package gui;
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 ActionListenerText {
public static void main(String[] args) {
JFrame f=new JFrame("LOL");
f.setSize(400,300);
f.setLocation(580,200);
f.setLayout(null);
final JLabel l=new JLabel();
ImageIcon i=new ImageIcon("D:/shana.png");
l.setIcon(i);
l.setBounds(50,50,i.getIconWidth(),i.getIconHeight());
JButton b=new JButton("隐藏图片");
b.setBounds(150,200,100,30);
//b.addActionListener((e)->l.setVisible(false)); 匿名类写法
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
l.setVisible(false);
}
});
f.add(l);
f.add(b);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
键盘监听
键盘监听器: KeyListener
keyPressed 代表 键被按下
keyReleased 代表 键被弹起
keyTyped 代表 一个按下弹起的组合动作
KeyEvent.getKeyCode() 可以获取当前点下了哪个键
package gui;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import com.sun.xml.internal.messaging.saaj.soap.ImageDataContentHandler;
public class KeyListenerText {
public static void main(String[] args) {
JFrame f=new JFrame("LOL");
f.setSize(400,300);
f.setLocation(580,200);
f.setLayout(null);
final JLabel l=new JLabel();
ImageIcon i=new ImageIcon("D:/shana.png");
l.setIcon(i);
l.setBounds(50,50,i.getIconWidth(),i.getIconHeight());
// 增加键盘监听
f.addKeyListener(new KeyListener() {
@Override // 一个按下弹起的组合动作
public void keyTyped(KeyEvent e) {
// TODO 自动生成的方法存根
}
@Override // 键被弹起
public void keyReleased(KeyEvent e) {
// TODO 自动生成的方法存根
}
@Override //键被按下
public void keyPressed(KeyEvent e) {
// TODO 自动生成的方法存根
if(e.getKeyCode()==39)
l.setLocation(l.getX()+10,l.getY());
}
});
f.add(l);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
鼠标监听
鼠标监听器:MouseListener
mouseReleased 鼠标释放
mousePressed 鼠标按下
mouseExited 鼠标退出
mouseEntered 鼠标进入
mouseClicked 鼠标点击
在本例中,使用mouseEntered,当鼠标进入图片的时候,图片就移动位置
package gui;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MouseListenerText {
public static void main(String[] args) {
JFrame f=new JFrame("LOL");
f.setSize(800,600);
f.setLocationRelativeTo(null);
f.setLayout(null);
final JLabel l=new JLabel();
ImageIcon i=new ImageIcon("D:/shana_heiheihei.png");
l.setIcon(i);
l.setBounds(375,275,i.getIconWidth(),i.getIconHeight());
f.add(l);
l.addMouseListener(new MouseListener() {
@Override // 释放鼠标
public void mouseReleased(MouseEvent e) {
// TODO 自动生成的方法存根
}
@Override // 按下鼠标
public void mousePressed(MouseEvent e) {
// TODO 自动生成的方法存根
}
@Override // 鼠标退出
public void mouseExited(MouseEvent e) {
// TODO 自动生成的方法存根
}
@Override // 鼠标进入
public void mouseEntered(MouseEvent e) {
// TODO 自动生成的方法存根
Random r=new Random();
int x=r.nextInt(f.getWidth()-l.getWidth());
int y=r.nextInt(f.getHeight()-l.getHeight());
l.setLocation(x,y);
}
@Override // 按下释放组合动作为点击鼠标
public void mouseClicked(MouseEvent e) {
// TODO 自动生成的方法存根
}
});
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
适配器
鼠标监听适配器:MouseAdapter
一般说来在写监听器的时候,会实现MouseListener。
但是MouseListener里面有很多方法实际上都没有用到,比如mouseReleased ,mousePressed,mouseExited等等。
这个时候就可以使用 鼠标监听适配器,MouseAdapter 只需要重写必要的方法即可。
package gui;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class MouseAdapterText {
public static void main(String[] args) {
JFrame f=new JFrame("LOL");
f.setSize(800,600);
f.setLocationRelativeTo(null);
f.setLayout(null);
final JLabel l=new JLabel();
ImageIcon i=new ImageIcon("D:/shana_heiheihei.png");
l.setIcon(i);
l.setBounds(375,275,i.getIconWidth(),i.getIconHeight());
f.add(l);
l.addMouseListener(new MouseAdapter() {
public void mouseEntered(MouseEvent e) {
Random r=new Random();
int x=r.nextInt(f.getWidth()-l.getWidth());
int y=r.nextInt(f.getHeight()-l.getHeight());
l.setLocation(x, y);
}
});
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
更多内容,点击了解: SWING 如何进行事件监听