2010-09-16 1 views
4

Мое приложение не приписывает себя при запуске. При изменении размера или его минимизации/максимизации окно приложения окрашивается.Проблема с краской Java Window

Эта проблема возникает только на машинах Windows (я тестировал XP, Vista и Windows 7). В Mac OS X и Linux приложение отлично работает.

Машины установили java 6. В моем приложении используется AWT, а не Swing. Я попытался использовать Swing (поэтому JFrame вместо Frame), но это не решает проблему.

Я проверил вызовы на repaint(), update() и paint() кадра. Все они появляются, и изображение для рисования доступно. Я также проверил, выполнены ли эти вызовы в потоке EDT. В этом случае. Когда окно изменяется (или min/max-ed), вызов paint() выполняется системой, и изображение рисуется.

Я боюсь, что у меня что-то действительно очевидное. Я делаю рамку видимой, проверяю ее (также проверял с признаком недействительности) и перерисовывал ее. Этого достаточно для Mac OS X и Linux.

Есть ли у кого-нибудь предложения, что я должен делать, или что еще попробовать?

Thanx заранее

Maurice

+4

как насчет вставки некоторого исходного кода? – pstanton

+3

Seconded - похоже, что вы были довольно тщательны, но если вы можете упростить свой исходный код до очень простого примера, который по-прежнему имеет ту же проблему и опубликовать его здесь, это, безусловно, поможет. –

ответ

1

Я предполагаю, что вы перекрывая Frame.paint. Вероятно, вы получите лучшие результаты от рисования до JPanel (или Canvas, если вы настаиваете на устаревших AWT), и когда вы это сделаете, убедитесь, что вы переопределяете paintComponent JPanel, а не краску. В некоторых случаях JLabel с ImageIcon может быть еще проще.

Как и другие, попробуйте опубликовать тестовый пример.

0

Трудно диагностировать проблему, не видя никакого исходного кода, но изображение полностью загружено?

AWT загружает изображения в фоновом режиме после, так что хотя вызов Toolkit.getImage() может возвращать действительный экземпляр Image, это не означает, что изображение загружается к тому времени. Вы можете использовать MediaTracker для отслеживания этого.

 Смежные вопросы

  • Нет связанных вопросов^_^