鼠标移到子组件时发生mouseExited事件

转载 2011年01月11日 22:12:00

比如一个JPanel 里面包括其它的组件,如JButton。现在要判断鼠标是否进入父JPanel,用addMouseListener的mouseEntered可以判断鼠标是否进入,但问题是:如果鼠标已经进入父JPanel,在里面move到子组件里,如move到JButton上了,就会触发mouseExited,认为鼠标已经exit,离开JPanel了。因为这时JButton已经捕获mouseEntered。

我创建了个窗口,上面加了图片.窗口ADD了mouseExited(MouseEvent me)事件.当我把鼠标放在图片上时JAVA会触发mouseExited事件(我的图片在窗口上的啊,mouseExited事件是ADD在窗口上的啊)也就是说我的鼠标没离开窗口只是在窗口的某个图片上JAVA会认为鼠标离开了窗口!!
窗口上的控件也应该是窗口的一部分啊!!怎么会说我的鼠标离开了窗体啊!!!!!

肯定啊!因为你不是给你的图片控件加上事件,而是对窗体!当你指向图片时,就离开了窗体,即使你把图片加窗体上!

试试这个

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class MouseExit extends JPanel {

        private JButton btnInner;

        public MouseExit() {

                setLayout( new FlowLayout() );

                initComponents();

                initListeners();

        }

        private void initComponents() {

                btnInner = new JButton( "Inner" );

                add( btnInner );

        }

        private void initListeners() {

                addMouseListener( new MouseAdapter() {

                        public void mouseExited( MouseEvent e ) {

                                Dimension dim = MouseExit.this.getSize();

                                if( e.getX() < 0 || e.getY() < 0 ||

                                        e.getX() >= dim.getWidth() || e.getY() >= dim.getHeight() )

                                        JOptionPane.showMessageDialog( MouseExit.this, e.getX() + "," + e.getY() );

                        }

                } );

        }

        private static void createAndShowGUI() {

                JFrame frm = new JFrame();

                frm.setDefaultCloseOperation( javax.swing.JFrame.EXIT_ON_CLOSE );

                frm.setContentPane( new MouseExit() );

                frm.pack();

                frm.setVisible( true );

        }

        public static void main( String[] args ) {

                SwingUtilities.invokeLater( new Runnable() {

                        public void run() {

                                createAndShowGUI();

                        }

                } );

        }

}

JAVA学习笔记

JAVA学习笔记 备注:简易笔记,自用。可参考。 2016年3月21日更新 1、 JDK(Java SE Development Kits),即Java开发工具包,最新版的为JDK7.0,代号Dolp...

鼠标移到GridView某一行时改变该行的背景色方法

方法一:效果图: 做法: 双击GridView的OnRowDataBound事件; 在后台的GridView1_RowDataBound()方法添加代码,最后代码如下所示: protect...

VC/MFC 当鼠标移到控件上时显示提示信息

VC/MFC 当鼠标移到控件上时显示提示信息 ToolTip是Win32中一个通用控件,MFC中为其生成了一个类CToolTipCtrl,总的说来其使用方法是较简单的,下面讲一下它的一般用法和高级用...

鼠标移到某个div需要显示该div下面的列表时

实例: 当鼠标移到购物车上时,显示购物车的列表。 问题: 由于之前购物车是一个dom,购物车列表是另一个DOM,因此用到mouseover和mouseout时,鼠标只要离开购物车购物车列表就会消失,根...
  • sly94
  • sly94
  • 2016年03月31日 15:18
  • 148

当滚动鼠标滚轮离开tracking区域的时候,mouseExited不被调用的问题

摘译自: http://stackoverflow.com/questions/8979639/mouseexited-isnt-called-when-mouse-leaves-trackingar...

鼠标拖拽组件移动的事件实现

在Swing中拖动一个组件或者图片,拖动图片和拖动组件是相同的道理,如果您打算拖动一个组件,只要给组件增加两个监听器就可以了。一个是addMouseListener(MouseListener l...

python Tkinter图形用户界面组件(鼠标、键盘事件)

鼠标事件 所以得Tkinter事件都用字符串描述,格式为,type(Button,Return)指定事件种类,modifier是指Double这样的前缀,detail则是指具体的鼠标按钮 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:鼠标移到子组件时发生mouseExited事件
举报原因:
原因补充:

(最多只允许输入30个字)