在swing中拖动对象,是对象中还是JPanel中的MouseMotionListener?

时间:2013-06-29 03:46:59

标签: java swing events

我正在读这本教科书中的一个问题:

"使用Swing时,必须执行以下哪项操作才能在应用程序窗口中拖动对象:"

A。在对象中有一个mouseDragged方法 B。将一个MouseListener添加到面板
C。将MouseMotionListener添加到对象
D。将MouseMotionListener添加到面板

我认为A不正确,因为mouseDragged可以从父对象继承。 B是错误的,因为MouseListener不用于鼠标拖动。因为它是我们想要拖动的对象,我相信正确的答案是C,但我不能100%确定我之前的假设是正确的。

MouseMotionListener的Java API表示"然后使用组件的addMouseMotionListener方法向该组件注册从该类创建的侦听器对象。 "那么这是否意味着该对象确实是添加MouseMotionListener的对象?

1 个答案:

答案 0 :(得分:1)

我认为答案是

D。在面板中添加MouseMotionListener

当你拖动某个东西时,该对象的坐标将在显示它的面板中发生变化。因此,通过向面板添加MouseMotionListener,您可以使用if条件检查拖动的起点是否在对象的边界内,并编写正确的代码来处理拖动。

如果在对象本身中添加MouseMotionListener,它将无法跟踪超出对象范围的拖动。