Это мой ПЕРВЫЙ вопрос о Stack, поэтому любые советы, как это сделать в следующий раз, будут оценены :) Я создал список из пары Rectangles. Я пытаюсь просмотреть этот список, чтобы проверить пересечение прямоугольника в списке, а также перетащил и выпустил JLabbel на этом прямоугольнике. Вот мой подход:для цикла, чтобы проверить пересечение через ArrayList прямоугольников
public void mouseReleased(MouseEvent e) {
Component comp = (Component) e.getSource();
Point locOnScreen = e.getLocationOnScreen();
int x = locOnScreen.x - initialLocOnScreen.x + initialLoc.x;
int y = locOnScreen.y - initialLocOnScreen.y + initialLoc.y;
boundsSet(x, y, comp);//method to limit dragging space in contentPane
List<Rectangle> placeHolder = new ArrayList<Rectangle>();
placeHolder.add(leftDesk);
placeHolder.add(leftPainting);
placeHolder.add(underBed);
placeHolder.add(onBed);
placeHolder.add(centerPainting);
placeHolder.add(window);
placeHolder.add(wardrobe);
for (Rectangle holder : placeHolder) {
if (holder.intersects(comp.getBounds())) {
JOptionPane.showMessageDialog(null, "Correct place !");
GameStatus.points += 10;
GameStatus.nrOfItems--;
if (GameStatus.points == 50)
GameStatus.level++;
} else
comp.setLocation(initialLoc);
}
}
Я установил для Прямоугольников соответствующие координаты (проверено сотни раз). Проблема в том, что он обнаруживает только пересечение с первым прямоугольником в списке ... Если я перетащу ярлык на другой размещенный прямоугольник, он не обнаружит его. Есть идеи?
Похоже, вы просто проверить его с одного прямоугольника не все из них. –
'' .... так что любые советы, как сделать это лучше в следующий раз, будут оценены ... "' - пожалуйста, подумайте о создании и публикации действительного [mcve] или [SSCCE] (http://sscce.org) , –
Вам действительно нужна ветка 'else'? Я не понимаю, почему он здесь. Кажется, это изменение позиции компонента после первой проверки. – Zefick