0

ArrayListアイコンのグリッドを上にペイントしようとしていcanvasます。10個のアイコンごとに次のアイコンが新しい行に表示されますが、正しく機能しないようです。最初のアイコンの最初のXとYの位置は、100、100です。

int x = 32; // Dimensions of icons
int y = x;

for (int pos = 0; pos < icons.getIcon().size(); pos++)
    {
        if(pos % 10 == 0)
        {

            icons.getIcon().get(pos).paintIcon(canvas, graphics, posX, posY);
        }
        else
        {
            icons.getIcon().get(pos).paintIcon(canvas, graphics, posX, posY);
            posX += x + 10;
        }
    }

これにより、各アイコンが横の行に表示されますが、新しい行で開始するために11番目と10番目ごとを取得する方法を理解できません。

4

1 に答える 1

1

11番目のアイコンであることが検出されたときに、「改行」を追加するのを忘れただけです。そんな感じ:

int x = 32; // Dimensions of icons
int y = x;
int posX = 100;
int posY = 100;

for (int pos = 0; pos < icons.getIcon().size(); pos++) {
    if(pos % 10 == 0) {
        posY += y + 10;
        posX = 100; // Returns posX back to the left-most position
        icons.getIcon().get(pos).paintIcon(canvas, graphics, posX, posY);
    } else {
        icons.getIcon().get(pos).paintIcon(canvas, graphics, posX, posY);
    }
    posX += x + 10; // Do that out of the if, so that posX is incremented either way
}
于 2013-03-27T10:55:57.143 に答える