------------------------------------------------------原帖链接-------------------------------------------------------
--------------------------------------------------------上一篇链接--------------------------------------------------
【一】 KeyListener
(1)鼠标监听事件基本用法
书写格式
MouseListener mouse = new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
//鼠标按下后释放触发
}
@Override
public void mousePressed(MouseEvent e) {
//鼠标按下时触发
}
@Override
public void mouseExited(MouseEvent e) {
//鼠标的光标移出到组件触发
}
@Override
public void mouseEntered(MouseEvent e) {
//鼠标的光标移动到组件触发
}
@Override
public void mouseClicked(MouseEvent e) {
//鼠标发生单机事件时触发
} };
作用
上面MouseListener接口实现了5个方法
当鼠标 <左键><中键><右键>中的其中一个按下或者释放时就会被触发
package key;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Mouse1 {
public Mouse1() {
JFrame jframe = new JFrame();
jframe.setSize(600, 600); //设置窗体大小
jframe.setLocationRelativeTo(null); //设置居中显示
JButton jbutton = new JButton("按钮"); //添加按钮
jbutton.addMouseListener(mouse); //为按钮添加监听对象
jframe.getContentPane().add(jbutton); //获得容器,将按钮添加到容器中
jframe.setVisible(true);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
MouseListener mouse = new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
System.out.println("鼠标释放");
//鼠标按下后释放触发
}
@Override
public void mousePressed(MouseEvent e) {
System.out.println("鼠标按下");
//鼠标按下时触发
}
@Override
public void mouseExited(MouseEvent e) {
System.out.println("光标移除");
//鼠标的光标移出到组件触发
}
@Override
public void mouseEntered(MouseEvent e) {
System.out.println("光标移动到组件");
//鼠标的光标移动到组件触发
}
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("鼠标发生过单机事件");
//鼠标发生单机事件时触发
}
};
public static void main(String[] args) {
new Mouse1();
}
}
GIF演示
(2)鼠标的 [左键] [右键] [中间] 实现
鼠标常量值 | 表示的键位 |
---|---|
1 | 表示鼠标左键 |
2 | 表示鼠标中键 |
3 | 表示鼠标右键 |
获取鼠标e的方法 | 作用 |
---|---|
e.getButton() | 返回一个int值,对应的鼠标键 |
e.ClickCount() | 获取鼠连续 的单机次数 |
e.getX() | 获取鼠标的宽X位置 |
e.getY() | 获取鼠标高Y的位置 |
e.getSource() | 获取触发此组件的对象是 |
package key;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Mouse2 {
public Mouse2() {
JFrame jframe = new JFrame();
jframe.setSize(600, 600); //设置窗体大小
jframe.setLocationRelativeTo(null); //设置居中显示
jframe.setLayout(null);
JButton jbutton = new JButton("按钮"); //添加按钮
jbutton.setBounds(100, 100, 200, 200); //设置鼠标位置(100, 100)像素,大小为(200, 200)像素
jbutton.addMouseListener(mouse); //为按钮添加监听对象
jframe.getContentPane().add(jbutton); //获得容器,将按钮添加到容器中
jframe.setVisible(true);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
MouseListener mouse = new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
//鼠标按下后释放触发
}
@Override
public void mousePressed(MouseEvent e) {
//鼠标按下时触发
switch(e.getButton()) {
//e.getButton()返回数字1, 2, 3,分别表示鼠标左键, 鼠标中键, 鼠标右键
case 1: System.out.print("<鼠标左键触发>");
System.out.print("<鼠标的坐标:"+" (" + e.getX() + "," + e.getY() + ") >");
System.out.print("<鼠标连续点击次数:" + e.getClickCount() + ">\n");
break;
case 2: System.out.print("<鼠标中键触发>");
System.out.print("<鼠标的坐标:"+" (" + e.getX() + "," + e.getY() + ") >");
System.out.print("<鼠标连续点击次数:" + e.getClickCount() + ">\n");
break;
case 3: System.out.print("<鼠标右键触发>");
System.out.print("<鼠标的坐标:"+" (" + e.getX() + "," + e.getY() + ") >");
System.out.print("<鼠标连续点击次数:" + e.getClickCount() + ">\n");
break;
default:break;
}
}
@Override
public void mouseExited(MouseEvent e) {
//鼠标的光标移出到组件触发
}
@Override
public void mouseEntered(MouseEvent e) {
//鼠标的光标移动到组件触发
}
@Override
public void mouseClicked(MouseEvent e) {
//鼠标发生单机事件时触发
}
};
public static void main(String[] args) {
new Mouse2();
}
}
上面代码在mousePressed中写入方法
下面是Gif执行效果
上面单击点击和连续点击返回的值是不同的
【二】项目实例
< 做我女朋友好吗小程序?>
< 配置图片>
下面是代码示例
package key;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.util.Random;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class Mouse3 {
ImageIcon image = new ImageIcon("src/ax.jpg");
public Mouse3() {
JFrame jframe = new JFrame();
jframe.setSize(image.getIconWidth(), image.getIconHeight());
jframe.setLocationRelativeTo(null); //窗口剧中
jframe.setResizable(false); //设置窗口不可调整
//-----------------------------------------------------------------
jframe.addWindowListener(new WindowListener() {//窗口监听事件
@Override
public void windowOpened(WindowEvent e) {
}
@Override
public void windowIconified(WindowEvent e) {
}
@Override
public void windowDeiconified(WindowEvent e) {
}
@Override
public void windowDeactivated(WindowEvent e) {
}
@Override
public void windowClosing(WindowEvent e) {
//点击窗口右上角的'x'图标时关闭时触发
JOptionPane.showMessageDialog(null,"不做我女朋友别想退出来?");
//窗口关闭时弹出
}
@Override
public void windowClosed(WindowEvent e) {
}
@Override
public void windowActivated(WindowEvent e) {
}
});
//-----------------------------------------------------------------
JLabel jlabel = new JLabel(); //创建标签
jlabel.setIcon(image); //添加图片
jlabel.setLayout(null); //设置标签布局
JButton jbutton1 = new JButton("不愿意"); //创建按钮
jbutton1.setSize(100, 60); //设置按钮大小
jbutton1.setContentAreaFilled(false); //按钮设置为透明
jbutton1.setLocation(300, 50); //按钮位置
JButton jbutton2 = new JButton("愿意");
jbutton2.setSize(100, 60);
jbutton2.setContentAreaFilled(false);
jbutton2.setLocation(430, 50);
jlabel.add(jbutton1); //按钮加入到标签组
jlabel.add(jbutton2);
Random random = new Random(); //随机类
//-----------------------------------------------------------------
jlabel.addMouseListener(new MouseListener() {//鼠标监听事件
@Override
public void mouseReleased(MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
}
@Override
public void mouseExited(MouseEvent arg0) {
jbutton1.setLocation(random.nextInt(500), random.nextInt(460));
//通过获取随机数来重新设置按钮位置
}
@Override
public void mouseEntered(MouseEvent arg0) {
}
@Override
public void mouseClicked(MouseEvent arg0) {
}
});
//-----------------------------------------------------------------
jbutton2.addActionListener(new ActionListener() {
//为按钮添加AcctionListener监听事件
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);//但选择按钮为"愿意",退出程序
}
});
//-----------------------------------------------------------------
jframe.getContentPane().add(jlabel);//标签加入到容器中
jframe.setVisible(true);
jframe.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
//关闭方式JFrame.DO_NOTHING_ON_CLOSE
}
public static void main(String[] args) {
new Mouse3();
}
}
GIF演示
【3】下一篇
--------------------------------------------------KeyListener--------------------------------------------------------