Я использую метод перерисовки java, он перерисовывается, но обновление видно только когда я нажимаю на холст или изменяю размер панели. Как я могу это исправить ? Что вызывает это?
Вам необходимо вызвать метод revalidate (). Это заставляет менеджер макета обновлять / перекрашивать все его компоненты.
repaint () на самом деле не перерисовывает, а просто запрашивает перекрашивание компонента.
Может быть полезно просто извлечь объект Graphics из компонента, который вы хотите нарисовать. Затем просто вызовите метод рисования для объекта Graphics. Например:
g = component.getGraphics(); draw(g);