矩形上的鼠标侦听器



我正在尝试使用许多矩形绘制游戏地图(就像屏幕包含许多像素一样(。我正在使用图形 2DfillRect(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;   
                    }

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

它是一个扩展 JPanel 的类吗?一般来说,你必须在你的JPanel或其他任何东西上设置你的听众:

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

然后在你的监听器类中,你做这样的事情:

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。如果这不是您想要的,请在您的解释中更准确;)

相关内容

  • 没有找到相关文章

最新更新