Java:MouseListener、MouseMotionListener监听器与MouseEvent事件
目录
- 1. 监听器-MouseListener(鼠标监听器):
- 2. 监听器-MouseMotionListener(鼠标运动监听器):
- 3. 事件类MouseEvent:
- 链接:JDK文档
- 3.1 getXOnScreen()、getYOnScreen()、getLocationOnScreen():
- 3.1.1 示例:输出鼠标指针的绝对坐标:
- 3.2 getX()、getY()、getPoint():
- 3.3 getClickCount():
- 3.3.1 示例:检测单击还是双击:
- 3.4 getButton():
- 3.4.1 示例:检测按下的是什么键:
- 3.5 getWhen():
- 3.5.1 示例:输出事件所发生时的时间(不同格式)
- 3.6 paramString():
- 3.7 getModifiers()、静态方法getMouseModifiersText():
- 3.8 getModifiersEx()、静态方法getModifiersExText():
- 3.9 getID():
- 3.9.1 示例:用Switch语句将常量转化为字符串
- 3.10 getSource():
- 3.10.1 示例:输出点击的按钮名称
- 4. 示例
- 4.1 在一个JLabel中显示一个JButton的状态
- 4.2 在一个JLabel中显示鼠标相对于JFrame的坐标
- 4.3 为JButton做一个简单的日志
- 5. 适配器
- 5.1 MouseListener、MouseMotionListener监听器的适配器
- 6. 注脚
1. 监听器-MouseListener(鼠标监听器):
用addMouseListener()添加、removeMouseListener()删除此监听器1
MouseListener监听器是监听鼠标对添加了此监听器的组件进行的操作的,共有以下5个方法:
public void mouseClicked(MouseEvent e); //鼠标点击(左、中、右键和单、双击均可触发)
public void mousePressed(MouseEvent e); //鼠标按下(左、中、右键均可触发)
public void mouseReleased(MouseEvent e);//鼠标松开public void mouseEntered(MouseEvent e); //鼠标浮动
public void mouseExited(MouseEvent e); //鼠标离开
“鼠标浮动”指的是鼠标移动到组件上没有点击的时候,严肃点应该叫“进入”,但我个人感觉“浮动”更有趣
注意: 发生鼠标点击事件时,将会依次触发以下方法:
mousePressed(鼠标按下) ——> mouseReleased(鼠标松开) -> mouseClicked(按下并释放构成整体,总结为鼠标点击)
当只有mousePressed(鼠标按下)而没有mouseReleased(鼠标松开)时,不构成mouseClicked(鼠标点击),如把鼠标在按钮上按住然后移开鼠标再松开。与之相对应的情况则没有反应——即,在其他地方按下鼠标然后移到按钮上松开是不构成mouseReleased(鼠标松开)的。(第一种情况只构成mousePressed,第二种情况无触发事件)
2. 监听器-MouseMotionListener(鼠标运动监听器):
用addMouseMotionListener()添加、removeMouseMotionListener()删除此监听器1
尽管MouseMotionListener也是个监听器,但Java并没有提供“MouseMotionEvent”这样的事件,所以MouseListener和MouseMotionListener都是用的MouseEvent
public void mouseDragged(MouseEvent e); //鼠标拖动
public void mouseMoved(MouseEvent e); //鼠标移动(不包含拖动,即拖动时不触发移动事件)
在添加了此监听器的组件上拖动(或移动)才会触发,也就是鼠标在其他地方乱晃(或是按着乱晃)不会触发
3. 事件类MouseEvent:
链接:JDK文档
没找到想看内容或看不懂的看这里(因为我之前为了找JDK文档花了几乎一下午,这里贴给大家感觉应该有用):
JDK-8离线文档
JDK-17(个人在用)-在线文档
JDK-17-离线文档
JDK-11-在线文档
JDK-11-离线文档
3.1 getXOnScreen()、getYOnScreen()、getLocationOnScreen():
public int getXOnScreen();//返回鼠标指针的绝对X坐标(相对于全局(屏幕)的X坐标)
public int getYOnScreen();//返回鼠标指针的绝对Y坐标
public Point getLocationOnScreen();//返回鼠标指针的绝对坐标
3.1.1 示例:输出鼠标指针的绝对坐标:
System.out.println(e.getLocationOnScreen().toString());//使用getLocationOnScreen()
System.out.println("[x=" + e.getXOnScreen() + ",y=" + e.getYOnScreen() + "]");//使用getXOnscreen()和getYOnScreen()
System.out.printf("[x=%d,y=%d]\n", e.getXOnScreen(), e.getYOnScreen());//使用printf,同样使用getXOnScreen()和getYOnScreen()
3.2 getX()、getY()、getPoint():
public int getX();//返回鼠标指针相对于点击元素(DOM)的X坐标
public int getY();//返回鼠标指针相对于点击元素(DOM)的Y坐标
public Point getPoint();//返回鼠标指针相对于点击元素(DOM)的坐标
点击元素(DOM)就是指添加了此监听器的组件
用法及示例同上一节,这3个方法与上一节的区别就是一个是绝对坐标,一个是相对于本组件的坐标
3.3 getClickCount():
用于点击事件:
public int getClickCount();//返回点击的次数(不局限于1~2)
按下不同键不构成双击(即,当按下与上一次不同的鼠标按键时,内部变量clickCount被赋值为0),如,按顺序快速点击左键与右键,则两次都返回1
众所周知,构成双击需要快速点击同一个键两次。且实际上如果把这两次点击事件都getClickCount一下就会发现,第一次getClickCount()的值为1,第二次就为2;如果点击3次,则getClickCount()就分别为1,2,3,这证明了getClickCount()不仅只返回0,1和2的值,继续点击则会达到更高,所以如果用下面的示例测试一下就会发现,由于示例只检测了1和2的情况,所以如果getClickCount()的值达到更高则没有任何输出
3.3.1 示例:检测单击还是双击:
用If-else语句:
if (e.getClickCount() == 1)System.out.println("鼠标单击");
else if (e.getClickCount() == 2)System.out.println("鼠标双击");
或是用Switch语句:
switch (e.getClickCount()) {case 1:System.out.println("鼠标单击");break;case 2:System.out.println("鼠标双击");break;
}
以上这两个示例实际上存在一定问题,也就是上文提到的,如果getClickCount() > 2,则没有任何反应
3.4 getButton():
用于点击(或按下)事件:
public int getButton();//返回触发事件的鼠标按钮(常量)
//鼠标按钮常量(MouseEvent中):
public static final int NOBUTTON = 0; //没有按下鼠标按键(例如鼠标浮动、离开等事件)
public static final int BUTTON1 = 1; //鼠标左键
public static final int BUTTON2 = 2; //鼠标中键
public static final int BUTTON3 = 3; //鼠标右键
鼠标中键其实就是滚轮(按下滚轮)
如果你的鼠标有三个以上的按钮,则没有对应的常量,只会直接返回整数。如你的鼠标有5个按钮,则可能返回以下数值:
数值 | 对应常量 | 鼠标按键 |
---|---|---|
0 | NOBUTTON | (无) |
1 | BUTTON1 | 左键 |
2 | BUTTON2 | 中键 |
3 | BUTTON3 | 右键 |
4 | (无) | (第4个按键) |
5 | (无) | (第5个按键) |
3.4.1 示例:检测按下的是什么键:
用If-else语句:
if (e.getButton() == MonseEvent.BUTTON1)System.out.println("鼠标左键");
else if (e.getButton() == MonseEvent.BUTTON2)System.out.println("鼠标中键");
else if (e.getButton() == MonseEvent.BUTTON3)System.out.println("鼠标右键");
或是用Switch语句:
switch (e.getButton()){case MouseEvent.BUTTON1:System.out.println("鼠标左键");break;case MouseEvent.BUTTON2:System.out.println("鼠标中键");break;case MouseEvent.BUTTON3:System.out.println("鼠标右键");break;
}
如果你的鼠标比较特殊,有更多按键,则以上事例不够全面,可以给If-else语句加上最后一个else,Switch语句加一个default
3.5 getWhen():
顾名思义,作用为返回事件所发生的时间,是UTC(协调世界时)时间
public long getWhen(); //返回事件发生时的时间戳(1970年1月1日00:00至今的毫秒数)
3.5.1 示例:输出事件所发生时的时间(不同格式)
由于getWhen()所返回的是1970年至今的毫秒数,一般需要经过处理再打印出来,所以平时可以用java.util.Date类进行快捷地处理,如果想还可以用SimpleDateFormat类更细致地进行处理:
import java.util.Date; //Date类的构造器中有一个是直接接受1970年至今的毫秒数(long),和 getWhen()所返回的刚好吻合
import java.text.SimpleDateFormat; //可以使用SimpleDateFormat进行更细致的时间格式化字符串System.out.println( e.getWhen() ); //直接打印未经处理的毫秒数//使用Date类:
System.out.println( new Date(e.getWhen()) ); //使用Date默认的方式格式化,println()会自动调用Date类的toString()方法//使用SimpleDateFormat进行更细致的格式化:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println( sdf.format(new Date(e.getWhen())) );//使用printf()方法:
System.out.printf("%tc", new Date(e.getWhen()));
还可以用从C语言搬过来的printf()方法,它对Date类也提供支持,只要使用时间占位符 %t,范例中的c表示格式化方式,可以替换为其他方式,更多方式可以自己去查百度之类的
3.6 paramString():
返回标识此事件的参数字符串,此方法对于事件日志记录和调试很有用
//示例输出:
MOUSE_PRESSED,(52,93),absolute(59,163),button=1,modifiers=Ctrl+Button1,extModifiers=Ctrl,clickCount=2
输出介绍:
- 首先输出触发的事件类型。如示例中我把此方法在 mousePressed 中调用,输出为 MOUSE_PRESSED,详情看3.9节
- 其次为触发事件时鼠标相对于此组件的坐标。如示例中为 (52,163),前一个数为X轴(左右),后一个Y轴(上下)。和上文3.2中介绍的方法作用相同
- 然后是触发事件时鼠标的绝对坐标,即相对于屏幕的坐标。输出与第2条不同的是,前面跟一个"absolute"单词,意为"完全的",其次也是(X轴,Y轴)。与上文3.1中介绍的方法作用相同
- <有时没有> “button=?”,指触发事件所用的鼠标按钮是哪个,示例用的是左键(1),与上文3.4介绍的getButton()返回的值相同
- <有时没有> “modifiers=?”,指触发事件时的修饰符,与接下来将在3.7介绍的方法作用相同。如范例中我按住Ctrl键用左键按下按钮,输出"Ctrl+Button1"
- <有时没有> “extModifiers=?”,指触发事件时鼠标按钮所带的修饰符,与接下来将在3.8介绍的方法作用相同。如范例中我按住Ctrl键用左键按下按钮,输出"Ctrl+Button1"
- “clickCount=?”,指点击次数,与上文3.3中介绍的方法作用相同
…如有遗漏欢迎补充
3.7 getModifiers()、静态方法getMouseModifiersText():
其实getModifiers()方法已被打上Deprecated注解,不提倡使用,更提倡用下一节介绍的getModifiersEx()方法,但上文有所提及,所以简单介绍一下
getModifiers()方法返回事件的修饰符,常量在InputEvent中定义,用常见的位或(|) 方式结合。如我按住Ctrl键用左键触发事件,返回的修饰符如下:
e.getModifiers() == InputEvent.CTRL_MASK | InputEvent.BUTTON1_MASK;
之所以被废除,个人猜测是因为有些奇怪的BUG(特性?)
//如我按下鼠标中键,它返回这个:
InputEvent.ALT_MASK | InputEvent.BUTTON2_MASK //可实际上我并没有按Alt
再说说getMouseModifiersText():
public static String getMouseModifiersText(int modifiers); //将getModifiers()返回的修饰符翻译成字符串
//比如这个:
InputEvent.CTRL_MASK | InputEvent.BUTTON1_MASK
//它翻译为:
"Ctrl+Button1" //(实际上没有双引号)
3.8 getModifiersEx()、静态方法getModifiersExText():
静态方法getModifiersExText()在InputEvent类中定义
上一节(3.7)中getModifiers()和getMouseModifiersText()的合适替代品,更提倡用这个
上一节所使用的常量为XXX_MASK,这节所介绍的方法所使用的常量为XXX_DOWN_MASK。
getModifiersEx()同样有一些奇怪的BUG(特性?),我把它分为2种情况(在我的台式机上测试):
一、BUG(特性?)发作,不仅是上一节中介绍的凭空多出按键,而且直接忽略鼠标按钮,还是上一节中的范例:
//我按下鼠标中键:
InputEvent.BUTTON2_DOWN_MASK //我认为它应该返回这个
InputEvent.ALT_DOWN_MASK //结果事实让我震惊了(它先凭空生成了一个Alt,然后又把Button2给忽略掉了)
二、奇奇怪怪的修饰符也不加了,按钮也不忽略了。按下哪个就返回哪个,总之就突然恢复正常了,如:
//我按下 Ctrl + Alt + 左键,它正常返回:
InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.BUTTON1_DOWN_MASK
就挺玄学的,我在不同事件中测试,结果如下:
监听器 | 事件 | 状态 |
---|---|---|
MouseListener | mousePressed | 正常返回 |
MouseListener | mouseReleased | 离谱特性 |
MouseListener | mouseClicked | 离谱特性 |
MouseMotionListener | mouseDragged | 正常返回 |
其他事件则没有监听鼠标点击
至于getModifiersExText()则和上一节中的getMouseModifiers()作用相同。但getModifiersExText()用的是XXX_DOWN_MASK,getModifiersText()用的XXX_MASK,所以不能混起来用,上一节中的两个方法配套使用,这一节的两个方法也只能配套使用
3.9 getID():
返回触发的事件的常量(int),用于编写静态方法(工具)时使用,可用的常量如下:
常量名称 | 事件 | 值 |
---|---|---|
MOUSE_PRESSED | mousePressed(鼠标按下) | 501 |
MOUSE_RELEASED | mouseReleased(鼠标松开) | 502 |
MOUSE_CLICKED | mouseClicked(鼠标点击) | 500 |
MOUSE_ENTERED | mouseEntered(鼠标浮动) | 504 |
MOUSE_EXITED | mouseExited(鼠标离开) | 505 |
MOUSE_MOVED | mouseMoved(鼠标移动) | 503 |
MOUSE_DRAGGED | mouseDragged(鼠标拖动) | 506 |
还有一个较为特殊,这个是属于MouseWheelListener(鼠标滚轮监听器)的:
常量名称 | 事件 | 值 |
---|---|---|
MOUSE_WHEEL | mouseWheelMoved(鼠标滚轮移动) | 507 |
3.9.1 示例:用Switch语句将常量转化为字符串
常量的值是整数(int),要转化为字符串,除了使用Java机制-反射获取常量名,只能用Switch语句(或if-else)一个一个检测:
import static java.awt.event.MouseEvent.*; //后面懒得写全称可以用静态导入一次全导入进来public static String getEventName(final int id) throws IllegalArgumentException {switch (id) {case MOUSE_PRESSED:return "MOUSE_PRESSED";case MOUSE_RELEASED:return "MOUSE_RELEASED";case MOUSE_CLICKED:return "MOUSE_CLICKED";case MOUSE_ENTERED:return "MOUSE_ENTERED";case MOUSE_EXITED:return "MOUSE_EXITED";case MOUSE_MOVED:return "MOUSE_MOVED";case MOUSE_DRAGGED:return "MOUSE_DRAGGED";case MOUSE_WHEEL:return "MOUSE_WHEEL";default:throw new IllegalArgumentException("The id doesn't exist.");}
}
其实用反射获取常量名的开销要比用switch或if-else要高,所以这里就不贴代码了,感兴趣可以自己搓一篇出来
3.10 getSource():
此方法返回触发事件的对象,返回类型为Object,所以需要进行显式的向下转型
public Object getSource(); //返回触发事件的对象
常用于不同按钮添加同一个监听器对象,还有自己的静态方法(工具)中使用
3.10.1 示例:输出点击的按钮名称
就是上面说的不同按钮添加同一个监听器对象
public void main(String[] args) {JButton button1 = new JButton("Button-1"), //创建不同的按钮button2 = new JButton("Button-2");MouseListener ml = new MouseAdapter() //创建监听器对象。由于只实现了一个mouseClicked方法,使用将在第5.1节中介绍的鼠标适配器@Override //用适配器由于不是接口,最好顺手一个Override防止方法签名写错public void mouseClicked(MouseEvent e) {String buttonName = ((JButton) e.getSource()).getText(); //利用getSource获取触发的按钮对象,需向下转型System.out.println( "Clicked button: " + buttonName ); //输出按钮名}};button1.addMouseListener(ml); //添加监听器button2.addMouseListener(ml); //添加监听器//与本章内容无关,方便测试:JFrame frame = new JFrame("示例-3.10.1"); //创建窗口frame.setSize(240, 180);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setLayout(new GridLayout(1, 2)); //设置布局管理器,这里用网格管理器frame.add(button1); //添加按钮1frame.add(button2); //添加按钮2frame.setVisible(true); //显示窗口
}
4. 示例
4.1 在一个JLabel中显示一个JButton的状态
没有写得很好,甚至在clickCount只检测1和2:
//只有添加监听器的代码,没有JFrame那一部分:
public static void main(String[] args) {JButton button = new JButton("Button");//创建按钮JLabel label = new JLabel("按钮状态:" + "静止");//显示button的状态button.addMouseListener(new MouseListener() { //使用匿名类添加MouseListener监听器public void mouseClicked(MouseEvent e) { //鼠标点击String str = "";if (e.getButton() == MouseEvent.BUTTON1)//检测按下的是什么键,也可以用Switch语句(见上)str = "左键";else if (e.getButton() == MouseEvent.BUTTON2)str = "中键";else if (e.getButton() == MouseEvent.BUTTON3)str = "右键";else str = "Button_" + e.getButton();if (e.getClickCount() == 1)//检测单击还是双击str += " 单击";else if (e.getClickCount() == 2)str += " 双击";label.setText("按钮状态:" + str);}public void mousePressed(MouseEvent e) { //鼠标按下if (e.getButton() == MouseEvent.BUTTON1)//按下的是哪个键(也可以用Switch语句)label.setText("按钮状态:" + "左键按下");else if (e.getButton() == MouseEvent.BUTTON2)label.setText("按钮状态:" + "中键按下");else if (e.getButton() == MouseEvent.BUTTON3)label.setText("按钮状态:" + "右键按下");else label.setText("按钮状态:Button_" + e.getButton() + " pressed";}public void mouseReleased(MouseEvent e) { //鼠标松开label.setText("按钮状态:" + "静止");}public void mouseEntered(MouseEvent e) { //鼠标浮动(鼠标移动到组件上没有点击的时候)label.setText("按钮状态:" + "鼠标浮动");}public void mouseExited(MouseEvent e) { //鼠标离开label.setText("按钮状态:" + "静止");}});//TODO:写JFrame的位置,也可以把下面那一段直接贴在这里
}
感觉还是把JFrame那一段贴出来比较方便测试:
//这一段接在main方法的末尾:JFrame frame = new JFrame("示例4.1");//创建窗口frame.setSize(240, 80);//设置大小frame.setLayout(new GridLayout(1, 2)); //设置布局管理器,这里用的GridLayoutframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.add(button);//添加按钮frame.add(label);//添加显示状态用的那个JLabelframe.setVisible(true);//显示窗口
4.2 在一个JLabel中显示鼠标相对于JFrame的坐标
这是MouseMotionListener监听器的示例:
public static void main(String[] args) {JFrame frame = new JFrame("示例4.2");//创建窗口JLabel jl_x = new JLabel(),//显示鼠标X坐标jl_y = new JLabel();//显示鼠标Y坐标frame.addMouseMotionListener(new MouseMotionListener() {//为窗口添加MouseMotionListener监听器public void mouseMoved(MouseEvent e) { //鼠标移动jl_x.setText("X坐标=" + e.getX()); //显示鼠标X坐标jl_y.setText("Y坐标=" + e.getY()); //显示鼠标Y坐标}public void mouseDragged(MouseEvent e) {//鼠标拖动jl_x.setText("X坐标=" + e.getX()); //显示鼠标X坐标jl_y.setText("Y坐标=" + e.getY()); //显示鼠标Y坐标}});//下面这些和文章内容无关,可以不看,直接跳过:frame.setSize(240, 180);//设置大小frame.setLayout(new GridLayout(1, 2)); //设置布局管理器,这里用的网格布局管理器frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.add(jl_x);//添加显示X坐标的JLabelframe.add(jl_y);//添加显示Y坐标的JLabelframe.setVisible(true);//显示窗口
}
4.3 为JButton做一个简单的日志
运用了第3节中大部分方法,这里用+连接字符串,更推荐用String.format()
import nighramet.util.MouseConst; //3.9.2中的工具/*** 根据参数生成一个简单的代表日志的字符串* 字符串格式:[时间]_触发事件,鼠标坐标,绝对坐标,鼠标按钮,修饰符,修饰符新,点击次数* @param e 鼠标事件的对象,包含很多重要信息* @return 生成的一行代表日志的字符串*/
private static String log(MouseEvent e) throws IllegalAccessException {return ("[" + (new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss").format(new Date(e.getWhen()))) + "]_" //抓取事件发生时间+ "id=" + MouseConst.getConstName(e.getID()) + ", " //发生的事件+ "coordinate=[" + e.getX() + "," + e.getY() + "], " //发生时鼠标坐标+ "absolute[" + e.getXOnScreen() + "," + e.getYOnScreen() + "], " //绝对坐标+ "button=" + e.getButton() + ", " //按下的是哪个鼠标按钮+ "modifiers=" + MouseEvent.getMouseModifiersText(e.getModifiers()) + ", " //修饰符+ "modifiersEx=" + InputEvent.getModifiersExText(e.getModifiersEx()) + ", " //新修饰符+ "clickCount=" + e.getClickCount() //点击次数);
}
现在可以把此方法加入到监听器中试一试了:
public static void main(String[] args) {JButton button = new JButton("Button");button.addMouseListener(new MouseListener() {public void mousePressed(MouseEvent e) { System.out.println(log(e)); }public void mouseReleased(MouseEvent e) { System.out.println(log(e)); }public void mouseClicked(MouseEvent e) { System.out.println(log(e)); }public void mouseEntered(MouseEvent e) { System.out.println(log(e)); }public void mouseExited(MouseEvent e) { System.out.println(log(e)); }});button.addMouseMotionListener(new MouseMotionListener() {public void mouseMoved(MouseEvent e) { System.out.println(log(e)); }public void mouseExited(MouseEvent e) { System.out.println(log(e)); }});JFrame frame = new JFrame("示例4.3");frame.setSize(240, 180);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.add(button);frame.setVisible(true);
}
5. 适配器
5.1 MouseListener、MouseMotionListener监听器的适配器
MouseListener、MouseMotionListener监听器的适配器都是MouseAdapter,它同时也是MouseWheelListener(鼠标滚轮监听器)的适配器(它同时导出自这3个监听器接口)
6. 注脚
这两个方法都是在JComponent中定义的,因此这两个监听器适用于JComponent及其子类 几乎是所有组件了。 ↩︎ ↩︎
Java:MouseListener、MouseMotionListener监听器与MouseEvent事件相关推荐
- Java MouseEvent事件
Java MouseEvent事件 在任何事件都可以使用鼠标事件,当发生相关的事件是MouseEvent类自动一个事件对象 addMouseListener(MouseListener listene ...
- java实用教程——组件及事件处理——MouseEvent事件
MouseEvent事件 任何组件上都可以发生鼠标事件,如鼠标进入组件.退出组件.在组件上方单击鼠标.拖动鼠标等都触发鼠标事件,即导致MouseEvent类自动创建一个 事件对象,事件源注册监视器的方 ...
- java游戏服务器开发之八--网络事件监听器
java游戏服务器开发之八-网络事件监听器 网络事件监听器,将网络变化交由NetworkListener处理 可以看到,我们现在所有的逻辑都是写在TcpMessageStringHandler里面, ...
- JAVA之简陋打地鼠(监听事件的练习)
只是用来练练监听事件,请忽视程序中可爱的图片..... import java.awt.BorderLayout; import java.awt.FlowLayout; import java.aw ...
- java mouselistener,Java MouseListener接口
本文概述 每当你更改鼠标状态时, 都会通知Java MouseListener.根据MouseEvent进行通知.可在java.awt.event包中找到MouseListener接口.它有五种方法. ...
- java swing列表数据加监听,【Java Swing公开课|Java监听列表项选择事件怎么用,看完这篇文章你一定就会了】- 环球网校...
[摘要]作为一门面向对象编程语言,Java吸收了C++语言的优点,也展现了其强大的一面,我们能在各个地方看到其功能强大和简单易用的两个特征,当然,也吸引了很多程序员的注意力,所以就有人想了解Java的 ...
- java swing 注册事件_比较Java Swing中三种注册事件的方法
Swing 是目前Java中不可缺少的窗口工具组,是建立图形化用户界面(GUI)程序的强大工具.Java Swing组件自动产生各种事件来响应用户行为.Java将事件封装成事件类,并且为每个事件类定义 ...
- java中的监听器模式
java中的监听器模式 监听器模式的角色 过程 EventObject EventListener 例子1 监听按钮的点击事件 事件源 event source: Button 事件对象 event ...
- Java语言学习--Swing中Button事件监听
1 前言 今天在使用Java Swing中的JButton的事件触发机制时遇到了许多问题,简单的了解了一下. 2 事件监听机制 事件监听的机制如下图所示分析. 3 代码分析 3.1 分步解析 1.事件 ...
最新文章
- 兔子繁殖MATLAB,2011-2012数学建模题
- 王者荣耀连接不上服务器最新赛季排名,王者荣耀新赛季连掉三段 初期不能打排位是有原因的...
- yolo算法_吴恩达深度学习笔记(100)-目标检测之YOLO 算法讲解
- 当用DJANGO的migrate不成功时。。。。
- 【转】c# 协变与抗变
- html文档基本结构由哪三对,第3章 网页制作及HTML语言基本结构简介.ppt
- kotlin 查找id_Kotlin程序查找等边三角形的区域
- tf.div()除法运算
- ssh框架配置文件流程_通过配置文件和安排增强您的工作流程
- linux的ky3关闭防火墙,ky3-8
- 利用 Google API 调用谷歌地图 演示1
- Luogu4936 Agent1
- 【优化求解】基于多阶段动态扰动和动态惯性权重的布谷鸟算法实现目标求解附matlab源码
- PTA 7-1 输入名字,输出问候语
- Linux系统管理----centos7系统进程管理
- 嵌入式系统开发笔记88:认识51微控制器系统架构
- 云计算效果如何,Mixpanel现身说法
- 微PE安装系统 不显示U盘中镜像文件 的解决方法
- android游戏后台运行点击桌面游戏图标游戏重启的解决方法
- unity3D 音频播放