矩形上的鼠标侦听器

时间:2017-05-16 15:44:10

标签: java user-interface graphics mouselistener mouseclick-event

我试图使用许多矩形形状绘制游戏地图(就像屏幕包含许多像素一样)。我正在使用图形2D fillRect(int x, int y, width, height)方法。我使用10 widths10 height使矩形变得很小。

如何检测是否有人点击了一个矩形?我已经阅读了其他问题,但我仍然对鼠标监听器如何检测到我的小矩形感到困惑?

有人可以给我任何其他解决方案,而不是制作矩形像素吗?也许像按钮或什么?

这是我制作多个矩形的示例代码:

public void paint (Graphics g){

Graphics2D g2D = (Graphics2D) g;
for (int j = 0; j<Map.WIDTH; j++){
    if(j==100){
            if(map[i][j]=='#'){
                x=50;
                y+=10;
                g2D.setColor(Color.BLACK);
                g2D.fillRect(x, y, 10, 10);
                x+=10;
                y+=0;   

                    }

注意:忽略迭代,因为我从某个输入文件(模板)迭代

1 个答案:

答案 0 :(得分:0)

这是一个扩展JPanel的类吗? 通常,您必须在JPanel上设置监听器或其他:

 void setListener(MouseListener listener) {
    myPanel.addMouseListener(listener);
}

然后在你的listenerClass中你做了类似的事情:

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

class ControlButton extends MouseAdapter {

private MyViewClass view;

ControlButton(MyViewClass view) {
    this.view = view;
    view.setListener(this);
}

@Override
public void mouseClicked(MouseEvent e) {

    //if my x and y point represent the upper left corner
    int rectX = view.getMyRectX();
    int rectY = view.getMyRectY();
    int rectWidth = view.getRectWidth();
    int rectHeight = view.getRectHeight();
    if (e.getX() > rectX && e.getX() < rectX + rectWidth
            && e.getY() > rectY && e.getY() < rectY + rectHeight) {
        System.out.println("YES");
    }
}

}

当然,我想你正在使用Swing。如果它不是您想要的,请在您的解释中更准确;)