Мой JApplet исчезает при перемещении на дополнительный монитор

Поэтому я написал небольшую программу для класса. Я разработал его как JApplet внутри неокрашенного JFrame, а не в браузере. Кроме того, это простая программа для рисования. Вы нажимаете две точки, чтобы нарисовать выбранные фигуры, а затем вызывается перекраска. У меня проблема в том, что когда вы рисуете, когда программа была перенесена на мой дополнительный монитор, кажется, что весь JApplet исчезает, отображая только нарисованную форму. Он исчезает только после выбора 2-й точки, поэтому я предполагаю, что он делает это при repaint().

Мой дополнительный монитор использует точно такую ​​же марку и разрешение, даже цветовой профиль.

Любые другие технические детали, я использую Java 1.7 (не могу вспомнить, какое обновление было у меня в голове), Windows 8 Enterprise 64x, использую кнопку Run в Eclipse для тестирования.

Заранее благодарю за любую помощь!

1 ответ

Решение

Я действительно вызываю getGraphics(); в методе init() JApplet..

Это проблема. Graphics объект - это временная вещь, которая будет перекрашена в следующий раз, когда JVM решит, что в этом есть необходимость. Это может быть вызвано:

  • Изменение размера или расположения окна.
  • Закрыв его с помощью другой программы, а затем удалив приложение покрытия.
  • Добавление новых компонентов или изменение отображаемых значений.

Посмотрите Выполнение Пользовательской Живописи для получения дополнительной информации о том, как сделать то, что вы пытаетесь достичь. OTOH Swing имеет JLabel что может показать BufferedImage, Вы можете использовать BufferedImage так, как вы хотите. Когда он обновится, позвоните repaint() на этикетке, чтобы увидеть эффект.

Другие вопросы по тегам