Сообщение от IDOL 1234
public void run() { G.fillRect(5, 5, 10, 10); this.repaint(); }
ЧЯДНТ?
|
Проблема в G. Нельзя сохранять экземпляр графикса из метода paint
НА ВРЕМЯ, ПРЕВЫШАЮЩЕЕ ВЫЗОВ МЕТОДА PAINT(). При завершении паинта этой переменной приходит конец.
Решение: рисуй всё в paint'e, управляй содержимым через состояния проги, которые сам назначишь.
В run'e вызывай repaint(); serviceRepaint();
В паинте необязательно делать месиво из кода, можно создать свои функции рисования (передавать в них экземпляр графикса можно) и вызывать их:
public void paint(Graphics g) {
if(state == STATE_GAME) {
drawMap(g);
drawGui(g);
}
}
private void drawMap(Graphics g) {
//карта
}
private void drawGui(Graphics g) {
//интерфейс
}