在 Java 中检查鼠标是否被点击
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/18324853/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Checking if the mouse is clicked in Java
提问by MezuCobalt
I am writing a GUI in Java. I need to know how to check if the user clicks the mouse. I know how to check the position of the mouse, but I just need to check if it's clicked.
我正在用 Java 编写 GUI。我需要知道如何检查用户是否点击了鼠标。我知道如何检查鼠标的位置,但我只需要检查它是否被点击。
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");
}
}
this is all my code, so please just explain how to impliment that one mouse checker thing. Thanks!
这是我所有的代码,所以请解释如何实现鼠标检查器的东西。谢谢!
回答by Kon
Implement the MouseListener
interface and put your code inside the mouseClicked(MouseEvent e)
method. Then add an instance of this class as a listener to your component.
实现MouseListener
接口并将您的代码放入mouseClicked(MouseEvent e)
方法中。然后将此类的一个实例作为侦听器添加到您的组件中。
Basically, you create a class like this:
基本上,你创建一个这样的类:
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) { }
}
Then you simple create a new instance of this new class with myMouseListener
然后你简单地使用 myMouseListener 创建这个新类的新实例
myMouseListener mml = new myMouseListener();
And you add it as a listener to your component. Something like:
然后将其添加为组件的侦听器。就像是:
myPanel.addMouseListener(mml);
All information here: http://docs.oracle.com/javase/7/docs/api/java/awt/event/MouseListener.html
这里的所有信息:http: //docs.oracle.com/javase/7/docs/api/java/awt/event/MouseListener.html