【发布时间】:2018-08-28 19:54:37
【问题描述】:
我被这个问题困住了:
当我在一个形状内单击时(有一个矩形和圆形的数组列表),我选择它(仅用于调试,将其颜色更改为蓝色)。因此,如果我在外部单击空白处,我会取消选择它(仅用于调试,将其颜色更改为以前的颜色)。
for(int i=0; i<images.size(); i++){
//checking if the click is inside a shape
if((images.get(i).getLocation().getX() < e.getX() && images.get(i).getLocation().getY() < e.getY() && images.get(i).getX() + images.get(i).getWidth() > e.getX() && images.get(i).getLocation().getY() + images.get(i).getHeight() > e.getY())){
images.get(i).setColor(Color.BLUE);
images.get(i).setIsSelected(true);
//debugging
JOptionPane.showMessageDialog(null, images.get(i).getIsSelected());
repaint();
//JOptionPane.showMessageDialog(null, colors.get(i));
}
else{
images.get(i).setColor(colors.get(i));
//debugging
JOptionPane.showMessageDialog(null, images.get(i).getIsSelected());
images.get(i).setIsSelected(false);
repaint();
}
例如,假设有 2 个圆形和 1 个矩形,全部为黑色。我的代码有以下工作流程:
- 在矩形内单击
- 将其颜色更改为蓝色
- 仅出于调试目的,它会打印“selected == true”(对于矩形)、“selected = false”(对于第一个圆圈)、“selected = false”(对于第二个圆圈)
- 点击空白处
- 将矩形的颜色更改为之前的颜色(黑色)
- 仅出于调试目的,它会打印“selected == false”(对于矩形)、“selected = false”(对于第一个圆圈)、“selected = false”(对于第二个圆圈)
- 再次在矩形内单击
- 将其颜色更改为蓝色
- 仅出于调试目的,它会打印“selected == true”(对于矩形)、“selected = false”(对于第一个圆圈)、“selected = false”(对于第二个圆圈)
- 在圆圈内单击
- 将其颜色更改为蓝色
- 只是为了调试,它打印“selected == true”(对于矩形),“selected = true”(对于第一个圆圈),“selected = false”,(对于第二个圆圈)
- 问题是:矩形的颜色变回黑色。它应该仍然是蓝色的。
如何同时选择 2 个或更多形状?
【问题讨论】:
标签: java 2d drawing draw shape