【发布时间】:2014-11-10 05:34:38
【问题描述】:
当我在 JPanel 中单击鼠标时,程序会创建一个绿点并在屏幕上显示一个点数计数器。这些点位于保存为对象的数组列表中。我正在尝试更改此代码,以便如果我在现有圆点的半径内单击(每个圆点的半径为 6),该圆点将从列表中消失并从屏幕上删除。
(在你问之前,是的,你可能会认为这是一个家庭作业问题,不,我不是想作弊)
我认为这涉及创建一个 for 循环来扫描数组中的对象,寻找指针可能点击过的对象。但是我很困惑如何准确地做到这一点
谢谢!
public class DotsPanel extends JPanel
{
private final int SIZE = 6; // radius of each dot
private ArrayList<Point> pointList;// "Point"s are objects that rep. the x & y coordinates of a dot
public DotsPanel()
{
pointList = new ArrayList<Point>();
addMouseListener (new DotsListener());
setBackground(Color.black);
setPreferredSize(new Dimension(300, 200));
}
public void paintComponent(Graphics page)
{
super.paintComponent(page);
page.setColor(Color.green);
for (Point spot : pointList)
page.fillOval(spot.x-SIZE, spot.y-SIZE, SIZE*2, SIZE*2);
page.drawString("Count: " + pointList.size(), 5, 15);//draws the image of the counter
}
private class DotsListener implements MouseListener
{
public void mousePressed(MouseEvent event)
{
pointList.add(event.getPoint());
repaint();
}
public void mouseClicked(MouseEvent event) {}
public void mouseReleased(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
}
【问题讨论】:
-
pointList.contains(event.getPoint()) - 如果 arraylist 包含该值,则返回 true,否则返回 false
标签: java arrays loops object jpanel