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

比如一个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();

                        }

                } );

        }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值