有没有办法停止MouseListener?

问题描述:

好吧,所以我想要做的是通过单击来放置图像。我有一个布尔值,我已经设置好了,当鼠标被按下时它是真的,当它被释放时它是假的。然后,我有以下代码:有没有办法停止MouseListener?

if (place == true){ 
       msex = MouseInfo.getPointerInfo().getLocation().x; 
       msey = MouseInfo.getPointerInfo().getLocation().y; 
      } 

,这在主屏幕上,以便它显示:

if (place == true){ 
      d.drawImage(twilightblock,msex - 45,msey - 85,this); 
     } 

然而,当我尝试它,我点击它显示出来,但它消失的时候我释放鼠标按钮。它也随着鼠标移动而不是停留在一个地方。我想知道,有没有办法在中间停止MouseListener,就像在按下按钮之后一样?如果是这样,那将是完美的。 :d

+1

你在听什么事件呢?可能只是使用不同的事件。 – givanse

+0

另外,看起来您所看到的行为与拖放相似。而且,你真正想要的是:通过点击选择一个图像,然后通过另一次点击选择一个目的地,对吧? – givanse

使用MouseAdapter并选择适当的方法:http://docs.oracle.com/javase/7/docs/api/java/awt/event/MouseAdapter.html

  1. 的onClick在图像上(第一组分)
  2. 存储图像的数据或者在一个临时结构参考/对象
  3. ONCLICK在第二个组件
  4. 从tempprary结构/对象访问图像的数据并将其应用到第二个组件
  5. 从第一个组件删除图像组件

回答您的意见,这是你可以做一个高层次支架:

public static void main() { 
    SomeOtherObject so; // use to store app data 
    // create possibly many components of type B 
    JComponentB compB = new JComponentB(so); 
    JComponentA compA = new JComponentA(so); 
    // add them to your JFrame, or other component 
} 

import java.awt.event.MouseAdapter; 
class JComponentA extends MouseAdapter { 
    String imagePath; 
    Image myImage; 

    public JComponentA(SomeOtherObject so) { }; 

    public void mouseClicked(MouseEvent e) { 
     this.imagePath = so.getImagePath; 
     // display new image, or maybe swap images 
    } 
} 

import java.awt.event.MouseAdapter; 
class JComponentB extends MouseAdapter { 
    String imagePath; 
    Image myImage; 

    public JComponentB(SomeOtherObject so) { }; 

    public void mouseClicked(MouseEvent e) { 
     so.setImagePath(this.imagePath); 
     // delete image, or maybe do a swap (that requires two strings in SomeOtherObject) 
    } 
} 
+0

嗯......我试图使用onClick,但OnClickListener显然只适用于Android,而且我不是针对android编程的。有其他选择吗?另外,我将如何保存并访问结构/对象中的数据?我真的很陌生.... – user3077423

+0

但是当我尝试实现它时,它说它不能被解析为类型。然后我试图弄清楚什么是错的,每一个线索都是关于机器人的。 http://*.com/questions/19606662/onclicklistener-cannot-be-resolved-to-a-type-and-not-applicable 我不能导入任何东西,只能让我创建一个接口。那是我需要做的吗? – user3077423

+0

我建议您使用IDE,它会帮助您处理这些细节。 Netbeans或Eclipse都是不错的选择。您需要导入MouseAdapter类。我已将它添加到代码段中。 – givanse