2013-08-19 4 views
0

Я пишу GUI в Java. Мне нужно знать, как проверить, нажимает ли пользователь мышь. Я знаю, как проверить положение мыши, но мне просто нужно проверить, не нажата ли она.Проверка щелчка мыши на 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

Является ли это свинг приложение? – 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 Честно говоря, это не становится намного глупее, чем это. Проверьте [Как написать прослушиватель мыши] (http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html) для более подробной информации. – MadProgrammer

Смежные вопросы