2010-04-12 3 views
0

Эй, ребята, у меня здесь небольшая проблема. У меня есть панель, где я рисую строку. Это игра, поэтому я продолжаю перерисовывать счет, чтобы обновить его. Однако, когда я рисую его снова, он нарисован поверх предыдущего балла, поэтому он выглядел все искаженным. Любые идеи, как это исправить?Java Graphics2D DrawString

comp2d.drawString (GetScore (Score), ScoreX, ScoreY);

+2

Похоже фон вашей панели не очищаются во время процесса перерисовывания. Если вы можете предоставить более подробную информацию (код) о том, как вы перекрашиваете, это поможет решить проблему. – Ash

ответ

5

Вам необходимо перерисовать фон, прежде чем рисовать строку. Если это обычная панель, вы можете перерисовать фон по вызову super.paintComponent(g) в своем собственном paintComponent; однако, поскольку это игра, я собираюсь угадать, что у вас есть другой фон, который вам нужно рисовать. Кроме того, я бы предположил, что вы используете JLabel вместо использования команды drawString, если это возможно.

+2

+1, я не знаю, почему люди продолжают пытаться делать обычную картину, например, рисовать строки и изображения на панели, когда вы можете просто использовать JLabel. Используйте подходящий менеджер макетов, и вам не нужно беспокоиться обо всех этих маленьких деталях рисования. – camickr

+0

Да, я попробовал JLabel, но по какой-то причине, когда я добавляю его, все остальное исчезает – user69514

0

Вы можете попробовать использовать repaint() после comp2d.drawString().

+0

Я пробовал раньше, но не удачи – user69514

0

при вызове этой COMAND: comp2d.drawString(GetScore(Score),ScoreX,ScoreY);

Вы должны назвать это: comp2d.dispose()

, потому что все операции с comp2d будут применены после .dispose()

+0

** Из очереди просмотра **: Могу ли я попросить вас добавить еще какой-нибудь контекст вокруг вашего ответа. Кодовые ответы трудно понять. Это поможет читателю и будущим читателям, если вы сможете добавить дополнительную информацию в свой пост. – RBT

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