首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我该如何检查用户是否点击了fillRect生成的方块,并在点击时执行操作?

我该如何检查用户是否点击了fillRect生成的方块,并在点击时执行操作?
EN

Stack Overflow用户
提问于 2020-04-18 04:12:56
回答 1查看 103关注 0票数 0

我正在用Java编写一个关于躲避橙色红色方块并单击它们以删除它们的游戏。然而,我需要弄清楚当fillRect被点击时,我如何编写代码来执行操作,如果这是不可能的,那么至少有一种方法可以找出用户点击的位置,或者检查他们是否点击了某个区域?

代码语言:javascript
运行
复制
public void mouseClicked(MouseEvent e) { System.out.println(e.getXOnScreen()); }
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { } 
public void mousePressed(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { } 
EN

Stack Overflow用户

发布于 2020-04-19 17:25:56

ClickCanvas.java

代码语言:javascript
运行
复制
public final class ClickCanvas extends Canvas
{
 private final List<Rectangle> squares=new ArrayList();

 ClickCanvas()
 {
  addMouseListener(new OnClick());

  for(int x=5;x<=305;x+=150)//3 by 3 grid of squares to click
  {
   squares.add(new Rectangle(x,5,50,50));
   squares.add(new Rectangle(x,155,50,50));
   squares.add(new Rectangle(x,305,50,50));
  }
 }

 @Override
 public void paint(Graphics g) //Painting Your Squares Here Called By Swing
 {
  super.paint(g);

  Dimension size=getSize();

  g.setColor(Color.WHITE);

  g.fillRect(0,0,size.width,size.height);

  g.setColor(Color.ORANGE);

  squares.forEach(square->g.fillRect(square.x,square.y,square.width,square.height));
 }

 private class OnClick extends MouseAdapter
 {
  @Override
  public void mousePressed(MouseEvent m)
  {
   squares.removeIf(square->square.contains(m.getPoint()));//You do Your Action Here in this case i remove the square if it contains the mouse point

   repaint(); //Repaint The Canvas To Now Redraw Remaining Squares

   if(squares.isEmpty())
   {
    JOptionPane.showMessageDialog(null,"Congrats You Win");

    System.exit(0);
   }
  }
 }
}

MainClass

代码语言:javascript
运行
复制
public class ClickTest 
{
 public static void main(String args[])
 {
  JFrame frame=new JFrame("Click Test");

  frame.add(new ClickCanvas());

  frame.setSize(400,450);

  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

  frame.setVisible(true);
 }
}

我希望它能给你一些关于你想在游戏中做什么的洞察力。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61279920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档