PaintComponent () Оставление за ранее нарисованными изображениями после перекраски ()
-
28-09-2019 - |
Вопрос
У меня есть jpanel, который рисует изображения .png. Каждое изображение имеет 2 копии, чтобы означать, было ли это выбрано. Одно изображение нормально, и у одного есть цветная граница, чтобы обозначить выбор. (Вы можете подумать об этих изображениях как простые фигуры ради аргумента)
Какая версия изображения нарисована, определяется через Mouselisteners. Если пользователь выбирает Image1, то Image1 будет отображать его выделенную версию.
В целом это работает, однако при перекраске () выделенной версии изображения остается позади. Поскольку выделенная версия немного больше, чем обычная версия, вы можете увидеть, что он торчал за недавно нарисованным нормальным изображением (перекрывающейся).
Я думал, что перекрашивается () должен был полностью выбрать нынешние рисунки и начать с нуля, это не так, кажется, здесь. Ниже приведена общая идея, черноколенник переключается внутри музелистенера.
Итак, мой вопрос, как я могу сделать перекраску () избавиться от его нарисованных изображений и начать с нуля.
Кроме того, если есть более простая способ добиться всего этого, пожалуйста, дайте мне знать, что изготовление 2 копий изображений является утомительная работа.
@Override
public void paintComponent(Graphics g){
Graphics2D g2 = (Graphics2D) g;
if(blackClicked)
g2.drawImage(blackSelected,0, 0, null);
else
g2.drawImage(black,0, 0, null);
g2.drawImage(green,0, 0, null);
}
Решение
Как мне сделать перекраск () избавиться от своих нарисованных изображений и начать с нуля.
Вы имеете в виду, как сделать перекраску наполнить компонент с помощью цвета фона перед покраской? Как насчет добавления
g2.setColor(getBackground());
g2.fillRect(0, 0, getWidth(), getHeight());
на вершине paintComponent()
?