0

我目前有一个扩展 JComponent 的抽象类。在这个类中,我定义了一个方法如下:

public void makeMouseOverListener(){
System.out.println("Inside make mouseover...");
MouseMotionListener ret = new MouseMotionListener(){
    public void mouseDragged(MouseEvent e) {

    }
    public void mouseMoved(MouseEvent e) {
        System.out.println("Mouse Moved");
    }
};
this.addMouseMotionListener(ret);
}

我用一些其他对象扩展了这个抽象类,并在每个对象的构造函数中调用了这个方法。我总是看到第一个 println,但“鼠标已移动”行从未出现在我的控制台中。我还尝试在每个构造函数中直接创建此 MouseMotionListener,但结果相同。所以最终我的问题是,我怎样才能确保我的对象中有一个工作动作监听器?先感谢您!

4

2 回答 2

0

new MouseMotionListener( code ) 里面的代码看起来像这样.. **

MouseMotionListener ret = new MouseMotionListener(
    public void mouseDragged(MouseEvent e) {
    }
    public void mouseMoved(MouseEvent e) {
        System.out.println("Mouse Moved");
    }
});

**

于 2013-06-19T17:06:55.160 回答
0

如果您在makeMouseOverListener自定义组件的构造函数中调用,那么鼠标位置很可能永远不会定位在组件本身之上。确保组件的尺寸大于0 x 0。这可以通过使用布局管理器来实现。例如,将组件定位在某个BorderLayout.CENTER位置。

于 2013-06-19T17:10:16.247 回答