【发布时间】:2019-01-29 21:51:34
【问题描述】:
我被这个问题困住了:
当我在一个形状(有一个矩形和圆形列表)内单击时,它会改变它的颜色。但是当我在外面点击时,它并没有变回来。
public void mouseClicked(MouseEvent me) {
Color colorAux;
for (int i = 0; i < images.size(); i++) {
colorAux = images.get(i).getColor();
if (images.get(i).getShape() == "Rectangle") {
if ((images.get(i).getLocation().getX() < me.getX() && images.get(i).getLocation().getY() < me.getY() && images.get(i).getX() + images.get(i).getWidth() > me.getX() && images.get(i).getLocation().getY() + images.get(i).getHeight() > me.getY())) {
images.get(i).setColor(Color.BLUE);
repaint();
JOptionPane.showMessageDialog(null, colorAux); //Debug
} else if (!(images.get(i).getLocation().getX() < me.getX() && images.get(i).getLocation().getY() < me.getY() && images.get(i).getX() + images.get(i).getWidth() > me.getX() && images.get(i).getLocation().getY() + images.get(i).getHeight() > me.getY()) && (images.get(i).getColor() == Color.BLUE)) {
images.get(i).setColor(colorAux);
repaint();
}
}
}
我应该使用一组颜色吗?不知道我该如何解决这个问题。为了澄清我要归档的内容,这里有一个示例:
如果列表包含一个紫色矩形,我希望它在单击它时变为蓝色(有效)。然后,当我在矩形外单击时,我希望它变回紫色(这不起作用)。
我已经尝试过 Leon 的建议,但没有奏效。我哪里做错了?
更具体地说,当我只绘制 1 个形状时,它可以工作!但例如,我画了一个蓝色矩形、一个紫色圆形和一个红色矩形,然后在一些形状内单击,例如红色矩形,每个形状都会将其颜色更改为 BLUE。当我再次点击外部时,它会将每个形状的颜色更改为默认颜色(黑色)。
public void mouseClicked(MouseEvent me) {
List<Color> colors = new ArrayList<Color>();
for (int j = 0; j < images.size(); j++) {
colors.add(images.get(j).getColor());
}
for (int i = 0; i < images.size(); i++) {
if ((images.get(i).getLocation().getX() < me.getX() && images.get(i).getLocation().getY() < me.getY() && images.get(i).getX() + images.get(i).getWidth() > me.getX() && images.get(i).getLocation().getY() + images.get(i).getHeight() > me.getY())) {
images.get(i).setColor(Color.BLUE);
repaint();
} else {
images.get(i).setColor(colors.get(i));
repaint();
}
}
}
【问题讨论】:
-
能否请您澄清一下您希望(或期望)发生的事情,例如,当单击形状外部时您希望发生什么?
-
@Leon 哦,对不起!我只想用之前选择的颜色上色。为了澄清,一个例子是:我画了一个紫色矩形>所以我在里面点击以将其颜色更改为蓝色>然后我点击外部并再次将其颜色更改为紫色
-
所以是
else if条件不起作用? -
我认为这就是发生的事情:您在单击时将颜色设置为蓝色。您再次单击,现在颜色为蓝色,您将其设置为蓝色
-
@Arnaud
else if,因为不会变回以前的颜色。