鼠标移到子组件时发生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();

                        }

                } );

        }

}

 

posted on 2023-05-25 09:59  高彰  阅读(51)  评论(0编辑  收藏  举报

导航