2013-08-19 43 views
0

我正在用Java寫一個GUI。我需要知道如何檢查用戶是否點擊鼠標。我知道如何檢查鼠標的位置,但我只需要檢查它是否被點擊。檢查鼠標是否在Java中被點擊

import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
/* 
* Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved. 
* 
* Redistribution and use in source and binary forms, with or without 
* modification, are permitted provided that the following conditions 
* are met: 
* 
* - Redistributions of source code must retain the above copyright 
*  notice, this list of conditions and the following disclaimer. 
* 
* - Redistributions in binary form must reproduce the above copyright 
*  notice, this list of conditions and the following disclaimer in the 
*  documentation and/or other materials provided with the distribution. 
* 
* - Neither the name of Oracle or the names of its 
*  contributors may be used to endorse or promote products derived 
*  from this software without specific prior written permission. 
* 
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
*/ 


import java.awt.*; 
import java.awt.event.*; 
import java.awt.image.*; 
import java.io.*; 

import javax.imageio.*; 
import javax.swing.*; 

/** 
* This class demonstrates how to load an Image from an external file 
*/ 
public class LoadImageApp extends Component { 

    BufferedImage img; 

    public void paint(Graphics g) { 
     g.drawImage(img, 50, 70, null); 
    } 

    public LoadImageApp() { 
     try { 
      img = ImageIO.read(new File("strawberry.jpg")); 
     } catch (IOException e) { 
     } 

    } 

    public Dimension getPreferredSize() { 
     if (img == null) { 
      return new Dimension(100,100); 
     } else { 
      return new Dimension(img.getWidth(null), img.getHeight(null)); 
     } 
    } 

    public static void main(String[] args) throws InterruptedException { 

     JFrame f = new JFrame("Load Image Sample"); 

     f.addWindowListener(new WindowAdapter(){ 
       public void windowClosing(WindowEvent e) { 
        System.exit(0); 
       } 
      }); 

     f.add(new LoadImageApp()); 
     f.pack(); 
     f.setVisible(true); 
     f.setResizable(true); 
     while(true){ 
      Thread.sleep(1000); 
      PointerInfo a = MouseInfo.getPointerInfo(); 
      Point b = a.getLocation(); 
      int x = (int) b.getX(); 
      int y = (int) b.getY(); 

      System.out.println(x); 
      System.out.println(y); 
     } 
     } 
    public void mouseClicked(MouseEvent e) { 
     System.out.println("mouseClicked"); 
     } 
} 

這是我所有的代碼,所以請解釋如何實現一個鼠標檢查器的東西。 謝謝!

+0

這是一個Swing應用程序? – Reimeus

+0

嗯...我不這麼認爲: – MezuCobalt

+0

創建一個新窗口。然後它加載一個圖像(或圖像)並在新窗口上顯示它們。我手動製作按鈕(圖像是按鈕,我有動畫覆蓋),但我需要採取x和y座標(我有x和y),並檢查是否點擊(我不知道該怎麼做那部分。) – MezuCobalt

回答

5

執行MouseListener接口並將您的代碼放入mouseClicked(MouseEvent e)方法中。然後將此類的實例作爲偵聽器添加到您的組件中。

基本上,你創建一個這樣的類:

class myMouseListener implements MouseListener { 

@Override 
public void mouseClicked(MouseEvent arg0) { 
    //Put the code you want here 
    //... 
    //... 
} 

@Override 
public void mouseEntered(MouseEvent arg0) { } 

@Override 
public void mouseExited(MouseEvent arg0) { } 

@Override 
public void mousePressed(MouseEvent arg0) { 
} 

@Override 
public void mouseReleased(MouseEvent arg0) { 

} 

} 

然後你簡單的創建這個新類的新實例myMouseListener

myMouseListener mml = new myMouseListener(); 

而且你將它添加爲監聽到你的組件。喜歡的東西:

myPanel.addMouseListener(mml); 

所有的信息在這裏:http://docs.oracle.com/javase/7/docs/api/java/awt/event/MouseListener.html

+0

我剛剛開始(從字面上看,今天),你可以貶低它,請澄清? – MezuCobalt

+0

編輯我的回覆@ user2548787 – Kon

+0

@ user2548787坦率地說,它沒有得到多少dumber那麼。查看[如何編寫鼠標監聽器](http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html)以獲取更多詳細信息。 – MadProgrammer