【问题标题】:ArrayList index is always 0 (zero) [duplicate]ArrayList 索引始终为 0(零)[重复]
【发布时间】:2016-09-22 04:04:42
【问题描述】:

我对 Java 中的 ArrayLists 有疑问。 问题是当我将一个元素添加到列表 (pointStorer) 时,索引不会增加,并且每次它重置并保持为零。 这是我的代码(这只是代码的重要部分):

private ArrayList pointStorer = new ArrayList();
private Point pointValues = new Point();

public void mouseClicked(MouseEvent e) {

    pointValues.setLocation(e.getX(), e.getY());
    mousePointX = pointValues.x;
    mousePointY = pointValues.y;

    repaint();
}

public void paint(Graphics g){

        pointStorer.add(pointValues);

        System.out.println("Index point "+pointStorer.indexOf(pointValues));


}

我使用方法 .indexOf 来知道我刚刚添加的元素的索引是什么,但它始终为零。

提前感谢您的帮助。

【问题讨论】:

  • 您是否只有一个 Point 实例,是否只创建一次,然后多次为其赋值?

标签: java arraylist


【解决方案1】:

您只有一个 Point 实例,您不断添加到 ArrayList 中,因此 ArrayList 的所有索引都包含相同的 Point

要在每次单击鼠标时添加一个新的Point,您应该创建一个新的Point 实例:

public void mouseClicked(MouseEvent e) {

    Point pointValues = new Point();
    pointValues.setLocation(e.getX(), e.getY());
    mousePointX = pointValues.x;
    mousePointY = pointValues.y;

    repaint();
}

【讨论】:

  • 啊,你是对的!有效!非常感谢!
【解决方案2】:

您应该在 paint() 方法中实例化您的 pointStorer 变量

【讨论】:

    猜你喜欢
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-21
    • 2012-12-30
    • 2013-05-29
    • 2013-04-03
    相关资源
    最近更新 更多