我目前正试图在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));
}
}
}
}
发生的问题是我试图填充/绘制/更改我的临时绘画程序中绘制的单个下一个元素的颜色,但它会改变每个形状。
非常感谢任何提示(或解释为何会发生这种情况)。
答案 0 :(得分:2)
此问题的最可能原因是shapes
实际上并不包含多个形状,而只包含对同一Shape对象的多个引用。然后该错误将出现在填充Vector的代码部分。
旁注:Vector
课程陈旧且过时。除非您使用真正需要ArrayList
的API(在Swing中确实发生),否则应该避免使用Vector
。如果您正在使用教授您使用Vector
的教程或书籍,那么它们可能已超过10年,应该避免使用。