鼠标移到子组件时发生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   高彰  阅读(53)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2022-05-25 macOS开发NSMenu NSMenuItem的简单是使用-鼠标右键菜单栏
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示