我正在尝试使用许多矩形绘制游戏地图(就像屏幕包含许多像素一样(。我正在使用图形 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;
}
注意:只需忽略迭代,因为我是从某个输入文件(模板(迭代的
它是一个扩展 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。如果这不是您想要的,请在您的解释中更准确;)