Swing 如何進行事件監聽
示例 1 : 按鈕監聽
創建一個匿名類實作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 TestGUI {
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("e:/project/j2se/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(new ActionListener() {
// 當按鈕被點擊時,就會觸發 ActionEvent事件
// actionPerformed 方法就會被執行
public void actionPerformed(ActionEvent e) {
l.setVisible(false);
}
});
f.add(l);
f.add(b);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
示例 2 : 鍵盤監聽
鍵盤監聽器: KeyListener
keyPressed 代表 鍵被按下
keyReleased 代表 鍵被彈起
keyTyped 代表 一個按下彈起的組合動作
KeyEvent.getKeyCode() 可以獲取當前點下了哪個鍵

package gui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class TestGUI {
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("e:/project/j2se/shana.png");
l.setIcon(i);
l.setBounds(50, 50, i.getIconWidth(), i.getIconHeight());
// 增加鍵盤監聽
f.addKeyListener(new KeyListener() {
// 鍵被彈起
public void keyReleased(KeyEvent e) {
// 39代表按下了 “右鍵”
if (e.getKeyCode() == 39) {
// 圖片向右移動 (y坐標不變,x坐標增加)
l.setLocation(l.getX() + 10, l.getY());
}
}
//鍵被按下
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
}
// 一個按下彈起的組合動作
public void keyTyped(KeyEvent e) {
}
});
f.add(l);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
示例 3 : 滑鼠監聽
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 TestGUI {
public static void main(String[] args) {
final JFrame f = new JFrame("LoL");
f.setSize(800, 600);
f.setLocationRelativeTo(null);
f.setLayout(null);
final JLabel l = new JLabel();
ImageIcon i = new ImageIcon("e:/project/j2se/shana_heiheihei.png");
l.setIcon(i);
l.setBounds(375, 275, i.getIconWidth(), i.getIconHeight());
f.add(l);
l.addMouseListener(new MouseListener() {
// 釋放滑鼠
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
// 按下滑鼠
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
// 滑鼠退出
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
// 滑鼠進入
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);
}
// 按下釋放組合動作為點擊滑鼠
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
});
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
示例 4 : 配接器
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 TestGUI {
public static void main(String[] args) {
final JFrame f = new JFrame("LoL");
f.setSize(800, 600);
f.setLocationRelativeTo(null);
f.setLayout(null);
final JLabel l = new JLabel("");
ImageIcon i = new ImageIcon("e:/project/j2se/shana_heiheihei.png");
l.setIcon(i);
l.setBounds(375, 275, i.getIconWidth(), i.getIconHeight());
f.add(l);
// MouseAdapter 配接器,只需要重寫用到的方法,沒有用到的就不用寫了
l.addMouseListener(new MouseAdapter() {
// 只有mouseEntered用到了
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 如何進行事件監聽
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/93417.html
標籤:Java
