Изменить: использует awt...
Я пытаюсь отобразить случайные числа в математической игре на основе апплета и столкнулся с проблемой. В зависимости от того, где я вызываю метод, происходит одно из двух:
- Числа генерируются и отображаются правильно, без автоматического обновления каждого кадра, но обрисовываются фоном и иллюстрацией в каждом кадре по мере их обновления во время выполнения, или...
- Число, отображаемое на экране, появляется над элементами фона, но перерисовывается заново в каждом кадре.
Быстрая иллюстрация:
private int setNumberOne() {
return rand.nextInt(11) + 2;
}
private int setNumberTwo() {
return rand.nextInt(11) + 2;
}
private int setAnswer() {
return setNumberTwo() * setNumberOne();
}
private void displayOutput() {
Graphics2D g2d = graphics();
int one = setNumberOne();
int ans = setAnswer();
setNumberTwo();
g2d.setColor(Color.WHITE);
g2d.drawString(one + " x ? = " + ans, 480, 480);
}
Вызов этой функции в методе инициализации отображает статический вопрос, который я могу обновить в другом месте при возникновении определенных триггеров, однако все остальное отображается поверх него событием обновления, делая его невидимым. Единственный способ, которым мне удалось увидеть, как это работает, — это удалить другие изображения из игры для тестирования.
Есть ли способ установить «приоритет» элементов графического интерфейса в апплете?
В настоящее время я пытаюсь включить метод displayOutput()
в свой собственный поток, но у меня нет такого опыта работы с Java, и его очень сложно решить.
Я также пытался не допускать обновления фона во время выполнения, но в результате движущиеся игровые объекты оставляли следы по всему экрану.
Что мне не хватает? Если у кого-то есть какие-либо предложения относительно того, как это можно правильно реализовать, я был бы рад их услышать.
update: "... нарисуйте [...] метод paint(...) компонента, если AWT, и используйте объект Graphics, переданный JVM" -
Решено, Спасибо!