操纵矢量的单个元素

时间:2014-10-28 15:46:50

标签: java vector

我目前正试图在Java中操纵向量的单个元素。如果我尝试使用elementAt(i)或get(i)在循环中执行此操作,则整个向量仍会更改。我正在寻找一种方法来尝试这样做,同时仍然使用向量(因为我在我的程序的其余部分使用它们)。

我试图将我的矢量克隆到临时矢量中,然后移除矢量的所有元素,除了要操作的元素,但无济于事。

这是我的代码段:

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);

    Graphics2D g2 = (Graphics2D) g;
    for (int i = 0; i < shapes.size(); i++) {
        if (shapes.get(i) != null){
            g2.setColor(colorSelected());
            if(fill.isSelected() && !((String)shapesList.getSelectedItem() == "Line")){
                g2.fill(shapes.elementAt(i));
            } else {
                g2.draw(shapes.elementAt(i));
            }
        }
    }
}

发生的问题是我试图填充/绘制/更改我的临时绘画程序中绘制的单个下一个元素的颜色,但它会改变每个形状。

非常感谢任何提示(或解释为何会发生这种情况)。

1 个答案:

答案 0 :(得分:2)

此问题的最可能原因是shapes实际上并不包含多个形状,而只包含对同一Shape对象的多个引用。然后该错误将出现在填充Vector的代码部分。

旁注:Vector课程陈旧且过时。除非您使用真正需要ArrayList的API(在Swing中确实发生),否则应该避免使用Vector。如果您正在使用教授您使用Vector的教程或书籍,那么它们可能已超过10年,应该避免使用。