Слушатель мыши вызывает repaint()
, и я вижу, что он на самом деле проходит мимо рисованной части, потому что я вижу, что globalcounter увеличен в выводе System.out.println()
.Однако на экране я не вижу никаких изменений до тех пор, пока не сверну окно и не увеличу его снова, не изменим его размер или не переместлю его из видимой области экрана и не верну обратно. Очевидно, я бы хотел обновить его без моего вмешательства.
class GUI extends javax.swing.JFrame {
int globalcounter=0;
class MyCanvas extends Canvas {
@Override
public void paint(Graphics g) {
globalcounter++;
g.drawString(globalcounter,100,100);
System.out.println(globalcounter);
}
}
}
(Первоначально я загружал изображение из файла, который постоянно обновлялся (веб-камера), и рисовал его на холсте. Когда я частично перетаскивал его из видимой области экрана и обратно, детальто, что было «извне», было обновлено, остальные нет.)
revalidate()
вместо repaint()
ничего не изменилось.
Я знаю, что этот пост является дубликатом Java перерисовка не работает правильно но когда я разместил его там, он был удален.