Java Graphics2D DrawString

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

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


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


Ответы (3)


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

person Michael Aaron Safyan    schedule 12.04.2010
comment
+1, я не знаю, почему люди продолжают пытаться создавать собственные рисунки, такие как рисование строк и изображений на панели, когда вы можете просто использовать JLabel. Используйте правильный менеджер компоновки, и вам не придется беспокоиться обо всех этих мелких деталях рисования. - person camickr; 12.04.2010
comment
да, я пробовал JLabel, но по какой-то причине, когда я его добавляю, все остальное исчезает - person user69514; 12.04.2010

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

person zs2020    schedule 12.04.2010
comment
Это решило мою проблему. Иногда моя новая строка рисовалась поверх моей старой, но это не происходит после удаления repaint() после drawString(). - person Coder20; 13.03.2018

когда вы вызываете эту команду: comp2d.drawString(GetScore(Score),ScoreX,ScoreY);

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

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

person Dmitry    schedule 13.05.2017
comment
Из очереди на проверку: могу ли я попросить вас добавить дополнительный контекст к вашему ответу. Ответы, содержащие только код, трудно понять. Если вы добавите больше информации в свой пост, это поможет как автору вопроса, так и будущим читателям. - person RBT; 13.05.2017