Почему эта команда печати строки выполняется дважды? - PullRequest
3 голосов
/ 05 марта 2011

У меня есть код ниже.

Все это работает, но досадно, что команда print line в цикле while выполняется дважды. Есть (и я проверял это) только уникальные элементы в очереди, без дубликатов.

public void paint(Graphics g) {

    boolean isParent;

    int drawCount = 1;

    int x = 0, y = 0, width = 0, height = 0;
    Color colour;

    while (!qtreeQueue.empty()) {

        drawNode = (QuadTreeNode) qtreeQueue.deque();
        isParent = drawNode.getIsParent();

        if (!isParent) {
            x = drawNode.getRectangle().x;
            y = drawNode.getRectangle().y;
            width = drawNode.getRectangle().width;
            height = drawNode.getRectangle().height;
            colour = getRectangleColour(drawNode);
            System.out.println(drawCount + ". Drawing: x = " + x + "; y = " + y + 
                    "; width = " + width + "; height = " + height + 
                    "; colour = " + colour.toString());
            minMax(drawNode);
            g.setColor(colour);
            g.fillRect(x, y, width, height);
            drawCount++;
        }
    }
    System.out.println("Minimum level of tree: " + min + "\nMaximum level: " + max);
}

Ценю помощь.

1 Ответ

6 голосов
/ 05 марта 2011

Это означает, что метод paint вызывается дважды, что совершенно нормально. Система может вызывать paint столько раз, сколько захочет, поэтому вам не следует выполнять какие-либо операции, которые могут изменить состояние вашей программы в этом методе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...