【发布时间】:2014-10-29 00:03:44
【问题描述】:
我目前正在尝试在 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));
}
}
}
}
正在发生的问题是我正在尝试填充/绘制/更改在我的临时绘制程序中绘制的单个下一个元素的颜色,但它会改变每个形状。
任何提示(或解释为什么会发生这种情况)将不胜感激。
【问题讨论】:
-
(String)shapesList.getSelectedItem() == "Line"你应该使用equals来比较字符串实例 -
你应该改变所选项目的形状。
-
欣赏它@Robin。我在深夜这样做了,从来没有注意到我的错误。
-
我的猜测是@Robin 已经解决了这个问题,但是由于您的描述,“它改变了每个形状”和“整个向量都改变了”非常模糊,我无法说出究竟是什么问题是。
-
嘿@ajb,Robin 告诉我要修复的内容与实际更改屏幕上的每个形状无关,只是修复了我的 if 语句。所以发生的事情是,当我在我的用户界面上选中填充或取消选中它时,下一次我在屏幕上绘制一个形状时,每个形状(而不仅仅是我绘制的那个)都将被操作为填充或勾勒出来,而不是我画的单一形状。