我试图使用许多矩形形状绘制游戏地图(就像屏幕包含许多像素一样)。我正在使用图形2D 和fillRect(int x, int y, width, height)
方法。我使用10 widths
和10 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;
}
注意:忽略迭代,因为我从某个输入文件(模板)迭代
答案 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。如果它不是您想要的,请在您的解释中更准确;)