gpt4 book ai didi

java - 如何在java中随机绘制的图像上添加mouselistener?

转载 作者:行者123 更新时间:2023-11-30 11:23:14 25 4
gpt4 key购买 nike

我正在用 Java 构建游戏,我需要将鼠标监听器添加到游戏中随机绘制的图像。

我让图片每隔 x 秒出现在随机位置,当我点击图片时,我想在记分牌上加 1 分。

我的随机图片添加代码是:

Random rand = new Random();
private int x = 0;
private int y = 0;

Timer timer = new Timer(700, new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
x = rand.nextInt(400);
y = rand.nextInt(330);
repaint();
}
});

public void mousePressed (MouseEvent me) {
// Do something here
repaint();
}

public void paintComponent(Graphics g) {
super.paintComponent(g);

g.drawImage(achtergrond, 0, 0, this.getWidth(), this.getHeight(), null);
//g.drawImage(muisje, 10, 10, null);
g.drawImage(muisje, x, y, 100, 100, this);
}

我在谷歌上查了一下,发现我需要添加一个带有鼠标事件的新类,但是我该如何添加呢?还不够清楚,因为我只是 Java 的初学者。

最佳答案

您知道图像的绘制位置 (x,y) 并且您知道图像的大小 (100,100),因此要判断鼠标点击是否在图像内部,您可以这样做:

public void mousePressed (MouseEvent me) {
int clickX = me.getXOnScreen();
int clickY = me.getYOnScreen();


if(clickX > x && clickX < x+100 && clickY > y && clickY < y+100) {
//the image has been clicked
}
repaint();
}

然后您正在编写的类可以实现 MouseListener

编辑以回应评论:

您不需要将代码链接到图像,您正在编写的组件应该实现鼠标监听器,因为这会维护状态并知道图像的绘制位置。我会首先查看此链接并实现一个基本的 MouseListener 以打印出鼠标在您的组件上单击的 x 和 y 坐标:

http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener.html

实现鼠标监听器的示例组件:

public class TestComponent extends JComponent implements MouseListener {

public TestComponent() {
this.addMouseListener(this);
}

@Override
public void mouseClicked(MouseEvent e) {
int clickedX = e.getX();
int clickedY = e.getY();

System.out.println("User Clicked: " + clickedX + ", " + clickedY);
}

@Override
public void mousePressed(MouseEvent e) {}

@Override
public void mouseReleased(MouseEvent e) {}

@Override
public void mouseEntered(MouseEvent e) {}

@Override
public void mouseExited(MouseEvent e) {}
}

关于java - 如何在java中随机绘制的图像上添加mouselistener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21333101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com