2015-05-22 2 views
0

Итак, мне дали код стартера для проекта, в основном домашнюю работу для класса java, в котором я участвую, но, похоже, не могут получить решение совершенно правильно. Основная идея: на графическом дисплее есть стек прямоугольников, и каждый прямоугольник можно щелкнуть. если вы нажмете прямоугольник где-то ниже верхнего, тот, который вы нажали, будет поднят на верх. будет сделана проверка, чтобы убедиться, что это произойдет, только если вы щелкнете только это поле, и только если вы щелкнули видимую часть этого окна.сложенные прямоугольники не двигаются должным образом

это раздел кода в вопросе, часть я должен был добавить:

public void moveToTop(Point p) { 
    int movingRectangle = -1; 

    for(int i = 0; i > rects.size(); i++) { 
     if(isInside(rects.get(i), p)) { 
      movingRectangle = i; 
     } 
    } 
    if(movingRectangle >= 0) { 
     addRect(deleteRect(movingRectangle)); 
    } 
} 
private boolean isInside(Rectangle143 r, Point p) { 
    return r.getX() <= p.getX() 
     && p.getX() <= r.getX() + r.getWidth() 
     && r.getY() <= p.getY() 
     && p.getY() <= r.getY() + r.getHeight(); 
} 

Моя проблема заключается в том, что ящики не приходят к вершине как это должно быть. они доступны для просмотра и показывают местоположение, где я щелкнул, но ничего не выходит на передний план.

Надеюсь, я задал этот вопрос, так что это легко понять .. если нет .. дайте мне знать, что я забыл, и я постараюсь изо всех сил заполнить любые пробелы.

+0

Из любопытства: почему вы называете класс «Rectangle143»? – GhostCat

ответ

0

Там простая ошибка в вашей цикл ...

for(int i = 0; i > rects.size(); i++) 

должен быть

for(int i = 0; i < rects.size(); i++) 

Обратите внимание на изменение от> до <

+0

lol, это я, пропустил простейшие вещи. теперь мой следующий вопрос: есть ли способ сделать это более эффективным? – Diggerplus

+0

Вы можете выйти из цикла, как только вы найдете прямоугольник для перемещения. Это означало бы, что он не будет искать остальных. –

Смежные вопросы