2013-12-08 148 views
0

好吧,所以我想要做的是通過單擊來放置圖像。我有一個布爾值,我已經設置好了,當鼠標被按下時它是真的,當它被釋放時它是假的。然後,我有以下代碼:有沒有辦法停止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

回答

0

使用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://stackoverflow.com/questions/19606662/onclicklistener-cannot-be-resolved-to-a-type-and-not-applicable 我不能導入任何東西,只能讓我創建一個接口。那是我需要做的嗎? – user3077423

+0

我建議您使用IDE,它會幫助您處理這些細節。 Netbeans或Eclipse都是不錯的選擇。您需要導入MouseAdapter類。我已將它添加到代碼段中。 – givanse

相關問題