Я пытаюсь нарисовать сетку значков из 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-й после, чтобы начать с новой строки.
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
}
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.