Тема: Hello, World!
Показать сообщение отдельно
Старый 27.07.2012, 14:14   #11
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Hello, World!

Сообщение от IDOL 1234 Посмотреть сообщение
public void run() 
{
    
G.fillRect(551010);
    
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) {
   //интерфейс
}
(Offline)
 
Ответить с цитированием