[英]Easier way to implement MouseListener in Java
我还有一个更一般的问题要问。 当我必须在类中实现MouseListener时,编译器会自动强制我实现MouseListener接口中存在的每个方法。 像这样:
MouseListener mouseLtnr = new MouseListener()
{
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
counter++;
xs.add(MouseInfo.getPointerInfo().getLocation().x - getLocationOnScreen().x);
ys.add(MouseInfo.getPointerInfo().getLocation().y - getLocationOnScreen().y);
System.out.println(xs.get(counter-1) + " , " + ys.get(counter-1));
if(flag == false)
repaint();
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
};
通常,我只需要其中的一两个即可。 有没有一种方法可以仅实现我需要的方法,还是必须处理浪费的代码行? 感谢您的时间。 最好,
陶塔
使用MouseAdapter
,它是一个基本类,它实现MouseListener
(以及MosueWheelListener
和MouseMotionListener
)接口,但是提供所有方法的空白实现,这意味着您可以覆盖所需的方法。
MouseListener mouseLtnr = new MouseAdapter()
{
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
counter++;
xs.add(MouseInfo.getPointerInfo().getLocation().x - getLocationOnScreen().x);
ys.add(MouseInfo.getPointerInfo().getLocation().y - getLocationOnScreen().y);
System.out.println(xs.get(counter-1) + " , " + ys.get(counter-1));
if(flag == false)
repaint();
}
}
如果您稍微研究一下文档,也会发现更多类似的类;)
仅供参考: MouseInfo.getPointerInfo()
将返回相对于屏幕而不是生成事件的组件的鼠标光标位置。 您还可以根据需要使用MouseEvent@getXOnScreen
和MosueEvent@getYOnScreen
或SwingUtilities#convertPointToScreen(Point, Component)
;)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.