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