Мой 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()
на этикетке, чтобы увидеть эффект.